From 0dcab1b3801dbbcafe4a15299ad04aed36e0e3c6 Mon Sep 17 00:00:00 2001 From: Manfred Touron <94029+moul@users.noreply.github.com> Date: Sun, 4 Oct 2020 10:18:07 +0200 Subject: [PATCH] chore: bump deps --- AUTHORS | 3 ++ depaware.txt | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 14 +++--- go.sum | 30 +++++++----- main.go | 2 +- rules.mk | 64 ++++++++++++++++++++------ 6 files changed, 207 insertions(+), 33 deletions(-) create mode 100644 depaware.txt diff --git a/AUTHORS b/AUTHORS index 78e221c..6cae3e1 100644 --- a/AUTHORS +++ b/AUTHORS @@ -6,11 +6,13 @@ Alen Masic Alexander Turner bozzo fossabot +ImgBotApp Jean-Louis Férey jerard@alfa-safety.fr Jess Jonathan Lestrelin Julien Dessaux +Konstantin Bakaras Manfred Touron <94029+moul@users.noreply.github.com> Manfred Touron Manuel @@ -24,6 +26,7 @@ Nelly Asher NocFlame Quentin Perez Renovate Bot +Sergey Yashchuk Shawn Wang Valentin Daviot valentin.daviot diff --git a/depaware.txt b/depaware.txt new file mode 100644 index 0000000..317ee06 --- /dev/null +++ b/depaware.txt @@ -0,0 +1,127 @@ +moul.io/sshportal dependencies: (generated by github.com/tailscale/depaware) + + github.com/anmitsu/go-shlex from github.com/gliderlabs/ssh+ + github.com/asaskevich/govalidator from moul.io/sshportal/pkg/bastion+ + github.com/cpuguy83/go-md2man/v2/md2man from github.com/urfave/cli + LD 💣 github.com/creack/pty from github.com/kr/pty + github.com/docker/docker/pkg/namesgenerator from moul.io/sshportal/pkg/bastion + github.com/docker/docker/pkg/random from github.com/docker/docker/pkg/namesgenerator + github.com/dustin/go-humanize from moul.io/sshportal/pkg/bastion + github.com/gliderlabs/ssh from moul.io/sshportal+ + github.com/go-sql-driver/mysql from github.com/jinzhu/gorm/dialects/mysql+ + github.com/jinzhu/gorm from gopkg.in/gormigrate.v1+ + github.com/jinzhu/gorm/dialects/mysql from moul.io/sshportal + github.com/jinzhu/gorm/dialects/postgres from moul.io/sshportal + github.com/jinzhu/gorm/dialects/sqlite from moul.io/sshportal + github.com/jinzhu/inflection from github.com/jinzhu/gorm + LD github.com/kr/pty from moul.io/sshportal + github.com/lib/pq from github.com/jinzhu/gorm/dialects/postgres + github.com/lib/pq/hstore from github.com/jinzhu/gorm/dialects/postgres + github.com/lib/pq/oid from github.com/lib/pq + github.com/lib/pq/scram from github.com/lib/pq + 💣 github.com/mattn/go-colorable from github.com/mgutz/ansi + 💣 github.com/mattn/go-isatty from github.com/mattn/go-colorable + github.com/mattn/go-runewidth from github.com/olekukonko/tablewriter + 💣 github.com/mattn/go-sqlite3 from github.com/jinzhu/gorm/dialects/sqlite + github.com/mgutz/ansi from moul.io/sshportal/pkg/bastion + github.com/olekukonko/tablewriter from moul.io/sshportal/pkg/bastion + github.com/pkg/errors from moul.io/sshportal/pkg/bastion + github.com/reiver/go-oi from github.com/reiver/go-telnet+ + github.com/reiver/go-telnet from moul.io/sshportal/pkg/bastion + github.com/russross/blackfriday/v2 from github.com/cpuguy83/go-md2man/v2/md2man + github.com/sabban/bastion/pkg/logchannel from moul.io/sshportal/pkg/bastion + github.com/shurcooL/sanitized_anchor_name from github.com/russross/blackfriday/v2 + github.com/urfave/cli from moul.io/sshportal+ + gopkg.in/gormigrate.v1 from moul.io/sshportal/pkg/bastion + moul.io/srand from moul.io/sshportal + moul.io/sshportal/pkg/bastion from moul.io/sshportal + moul.io/sshportal/pkg/crypto from moul.io/sshportal/pkg/bastion + moul.io/sshportal/pkg/dbmodels from moul.io/sshportal/pkg/bastion+ + golang.org/x/crypto/blowfish from golang.org/x/crypto/ssh/internal/bcrypt_pbkdf + golang.org/x/crypto/chacha20 from golang.org/x/crypto/chacha20poly1305+ + golang.org/x/crypto/chacha20poly1305 from crypto/tls + golang.org/x/crypto/cryptobyte from crypto/ecdsa+ + golang.org/x/crypto/cryptobyte/asn1 from crypto/ecdsa+ + golang.org/x/crypto/curve25519 from crypto/tls+ + golang.org/x/crypto/ed25519 from golang.org/x/crypto/ssh + golang.org/x/crypto/hkdf from crypto/tls + golang.org/x/crypto/poly1305 from golang.org/x/crypto/chacha20poly1305+ + golang.org/x/crypto/ssh from github.com/gliderlabs/ssh+ + golang.org/x/crypto/ssh/terminal from moul.io/sshportal/pkg/bastion + golang.org/x/net/dns/dnsmessage from net + D golang.org/x/net/route from net + golang.org/x/sys/cpu from golang.org/x/crypto/chacha20poly1305 + LD golang.org/x/sys/unix from github.com/mattn/go-isatty+ + W golang.org/x/sys/windows from golang.org/x/crypto/ssh/terminal + bufio from crypto/rand+ + bytes from bufio+ + container/list from crypto/tls + context from crypto/tls+ + crypto from crypto/ecdsa+ + crypto/aes from crypto/ecdsa+ + crypto/cipher from crypto/aes+ + crypto/des from crypto/tls+ + crypto/dsa from crypto/x509+ + crypto/ecdsa from crypto/tls+ + crypto/ed25519 from crypto/tls+ + crypto/elliptic from crypto/ecdsa+ + crypto/hmac from crypto/tls+ + crypto/md5 from crypto/tls+ + crypto/rand from crypto/ed25519+ + crypto/rc4 from crypto/tls+ + crypto/rsa from crypto/tls+ + crypto/sha1 from crypto/tls+ + crypto/sha256 from crypto/tls+ + crypto/sha512 from crypto/ecdsa+ + crypto/subtle from crypto/aes+ + crypto/tls from github.com/go-sql-driver/mysql+ + crypto/x509 from crypto/tls+ + crypto/x509/pkix from crypto/x509 + database/sql from github.com/go-sql-driver/mysql+ + database/sql/driver from database/sql+ + encoding from encoding/json + encoding/asn1 from crypto/x509+ + encoding/base64 from encoding/json+ + encoding/binary from crypto/aes+ + encoding/csv from github.com/olekukonko/tablewriter + encoding/hex from crypto/x509+ + encoding/json from github.com/asaskevich/govalidator+ + encoding/pem from crypto/tls+ + errors from bufio+ + flag from github.com/urfave/cli + fmt from crypto/tls+ + go/ast from github.com/jinzhu/gorm + go/scanner from go/ast + go/token from go/ast+ + hash from crypto+ + html from github.com/asaskevich/govalidator+ + io from bufio+ + io/ioutil from crypto/tls+ + log from github.com/gliderlabs/ssh+ + math from crypto/rsa+ + math/big from crypto/dsa+ + math/bits from crypto/md5+ + math/rand from github.com/docker/docker/pkg/random+ + net from crypto/tls+ + net/url from crypto/x509+ + os from crypto/rand+ + LD os/exec from github.com/creack/pty+ + os/user from github.com/lib/pq+ + path from github.com/asaskevich/govalidator+ + path/filepath from crypto/x509+ + reflect from crypto/x509+ + regexp from github.com/asaskevich/govalidator+ + regexp/syntax from regexp + sort from database/sql+ + strconv from crypto+ + strings from bufio+ + sync from context+ + sync/atomic from context+ + syscall from crypto/rand+ + text/tabwriter from github.com/urfave/cli + text/template from github.com/urfave/cli + text/template/parse from text/template + time from context+ + unicode from bytes+ + unicode/utf16 from encoding/asn1+ + unicode/utf8 from bufio+ diff --git a/go.mod b/go.mod index c327f8c..d455513 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module moul.io/sshportal require ( github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be - github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 + github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/creack/pty v1.1.11 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -11,9 +11,10 @@ require ( github.com/gliderlabs/ssh v0.3.0 github.com/go-sql-driver/mysql v1.5.0 github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect - github.com/jinzhu/gorm v1.9.15 + github.com/jinzhu/gorm v1.9.16 github.com/kr/pty v1.1.8 - github.com/mattn/go-colorable v0.1.6 // indirect + github.com/lib/pq v1.8.0 // indirect + github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d @@ -24,11 +25,12 @@ require ( github.com/sabban/bastion v0.0.0-20180110125408-b9d3c9b1f4d3 github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 // indirect github.com/smartystreets/goconvey v1.6.4 + github.com/stretchr/testify v1.4.0 // indirect github.com/urfave/cli v1.22.4 - golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de - golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 // indirect + golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 + golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f // indirect gopkg.in/gormigrate.v1 v1.6.0 - moul.io/srand v1.4.0 + moul.io/srand v1.6.0 ) go 1.14 diff --git a/go.sum b/go.sum index a6dea70..8d31165 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBK github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= -github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef h1:46PFijGLmAjMPwCCCo7Jf0W6f9slllCkkv7vyc1yOSg= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -38,8 +38,8 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/jinzhu/gorm v1.9.2/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= -github.com/jinzhu/gorm v1.9.15 h1:OdR1qFvtXktlxk73XFYMiYn9ywzTwytqe4QkuMRqc38= -github.com/jinzhu/gorm v1.9.15/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= +github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= +github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= @@ -55,8 +55,10 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= @@ -92,14 +94,16 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/urfave/cli v1.22.4 h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA= github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -111,14 +115,16 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 h1:OjiUf46hAmXblsZdnoSXsEUSKU8r1UEzcL5RVZ4gO9Y= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/gormigrate.v1 v1.6.0 h1:XpYM6RHQPmzwY7Uyu+t+xxMXc86JYFJn4nEc9HzQjsI= gopkg.in/gormigrate.v1 v1.6.0/go.mod h1:Lf00lQrHqfSYWiTtPcyQabsDdM6ejZaMgV0OU6JMSlw= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -moul.io/srand v1.4.0 h1:r5ZMiWDN0ni0lTV7KzJR/jx0K7GivJYW5WaXmufgeik= -moul.io/srand v1.4.0/go.mod h1:P2uaZB+GFstFNo8sEj6/U8FRV1n25kD0LLckFpJ+qvc= +moul.io/srand v1.6.0 h1:BnGM96WdZDjKIUJwv4q1rzz+dQvsSxeATTZsfueV1nQ= +moul.io/srand v1.6.0/go.mod h1:P2uaZB+GFstFNo8sEj6/U8FRV1n25kD0LLckFpJ+qvc= diff --git a/main.go b/main.go index 3e9c46a..f607f1a 100644 --- a/main.go +++ b/main.go @@ -22,7 +22,7 @@ var ( ) func main() { - rand.Seed(srand.Secure()) + rand.Seed(srand.MustSecure()) app := cli.NewApp() app.Name = path.Base(os.Args[0]) diff --git a/rules.mk b/rules.mk index 1d90565..2979d9c 100644 --- a/rules.mk +++ b/rules.mk @@ -23,7 +23,8 @@ # || | | | | | /_/_/_/\___/\_,_/_/ | # +--------------------------------------------------------------+ -all: help +.PHONY: _default_entrypoint +_default_entrypoint: help ## ## Common helpers @@ -31,6 +32,8 @@ all: help rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) check-program = $(foreach exec,$(1),$(if $(shell PATH="$(PATH)" which $(exec)),,$(error "No $(exec) in PATH"))) +my-filter-out = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v))) +novendor = $(call my-filter-out,vendor/,$(1)) ## ## rules.mk @@ -71,7 +74,7 @@ GO ?= go GOPATH ?= $(HOME)/go GO_INSTALL_OPTS ?= GO_TEST_OPTS ?= -test.timeout=30s -GOMOD_DIR ?= . +GOMOD_DIRS ?= $(sort $(call novendor,$(dir $(call rwildcard,*,*/go.mod go.mod)))) GOCOVERAGE_FILE ?= ./coverage.txt GOTESTJSON_FILE ?= ./go-test.json GOBUILDLOG_FILE ?= ./go-build.log @@ -109,10 +112,11 @@ go.unittest: ifeq ($(CI),true) @echo "mode: atomic" > /tmp/gocoverage @rm -f $(GOTESTJSON_FILE) - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do (set -e; (set -euf pipefail; \ + @set -e; for dir in $(GOMOD_DIRS); do (set -e; (set -euf pipefail; \ cd $$dir; \ - ($(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race -json | tee -a $(GOTESTJSON_FILE) 3>&1 1>&2 2>&3 | tee -a $(GOBUILDLOG_FILE); \ + (($(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race -json && touch $@.ok) | tee -a $(GOTESTJSON_FILE) 3>&1 1>&2 2>&3 | tee -a $(GOBUILDLOG_FILE); \ ); \ + rm $@.ok 2>/dev/null || exit 1; \ if [ -f /tmp/profile.out ]; then \ cat /tmp/profile.out | sed "/mode: atomic/d" >> /tmp/gocoverage; \ rm -f /tmp/profile.out; \ @@ -120,7 +124,7 @@ ifeq ($(CI),true) @mv /tmp/gocoverage $(GOCOVERAGE_FILE) else @echo "mode: atomic" > /tmp/gocoverage - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do (set -e; (set -xe; \ + @set -e; for dir in $(GOMOD_DIRS); do (set -e; (set -xe; \ cd $$dir; \ $(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race); \ if [ -f /tmp/profile.out ]; then \ @@ -132,7 +136,7 @@ endif .PHONY: go.checkdoc go.checkdoc: - go doc $(GOMOD_DIR) + go doc $(first $(GOMOD_DIRS)) .PHONY: go.coverfunc go.coverfunc: go.unittest @@ -140,46 +144,70 @@ go.coverfunc: go.unittest .PHONY: go.lint go.lint: - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ + @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \ cd $$dir; \ golangci-lint run --verbose ./...; \ ); done .PHONY: go.tidy go.tidy: - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ + @# tidy dirs with go.mod files + @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \ cd $$dir; \ $(GO) mod tidy; \ ); done +.PHONY: go.depaware-update +go.depaware-update: go.tidy + @# gen depaware for bins + @set -e; for dir in $(GOBINS); do ( set -xe; \ + cd $$dir; \ + $(GO) run github.com/tailscale/depaware --update .; \ + ); done + @# tidy unused depaware deps if not in a tools_test.go file + @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \ + cd $$dir; \ + $(GO) mod tidy; \ + ); done + +.PHONY: go.depaware-check +go.depaware-check: go.tidy + @# gen depaware for bins + @set -e; for dir in $(GOBINS); do ( set -xe; \ + cd $$dir; \ + $(GO) run github.com/tailscale/depaware --check .; \ + ); done + + .PHONY: go.build go.build: - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ + @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \ cd $$dir; \ $(GO) build ./...; \ ); done .PHONY: go.bump-deps go.bumpdeps: - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ + @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \ cd $$dir; \ $(GO) get -u ./...; \ ); done .PHONY: go.bump-deps go.fmt: - if ! command -v goimports &>/dev/null; then GO111MODULE=off go get golang.org/x/tools/cmd/goimports; fi - @set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ + @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \ cd $$dir; \ - goimports -w `go list -f '{{.Dir}}' ./...)` \ + $(GO) run golang.org/x/tools/cmd/goimports -w `go list -f '{{.Dir}}' ./...)` \ ); done +VERIFY_STEPS += go.depaware-check BUILD_STEPS += go.build -BUMPDEPS_STEPS += go.bumpdeps +BUMPDEPS_STEPS += go.bumpdeps go.depaware-update TIDY_STEPS += go.tidy LINT_STEPS += go.lint UNITTEST_STEPS += go.unittest FMT_STEPS += go.fmt +GENERATE_STEPS += go.depaware-update endif ## @@ -285,6 +313,11 @@ ifdef BUILD_STEPS build: $(PRE_BUILD_STEPS) $(BUILD_STEPS) endif +ifdef VERIFY_STEPS +.PHONY: verify +verify: $(PRE_VERIFY_STEPS) $(VERIFY_STEPS) +endif + ifdef RELEASE_STEPS .PHONY: release release: $(PRE_RELEASE_STEPS) $(RELEASE_STEPS) @@ -318,4 +351,7 @@ help:: @[ "$(TEST_STEPS)" != "" ] && echo " test" || true @[ "$(TIDY_STEPS)" != "" ] && echo " tidy" || true @[ "$(UNITTEST_STEPS)" != "" ] && echo " unittest" || true + @[ "$(VERIFY_STEPS)" != "" ] && echo " verify" || true @# FIXME: list other commands + +print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true