From 79abcabeb9871497431c4c8e95494d67157c7d1b Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Tue, 3 Aug 2021 19:30:23 +0200 Subject: [PATCH 1/5] refactor: clean project structure and dependencies --- .dockerignore | 6 + .github/workflows/tests.yml | 2 +- .gitignore | 1 + Makefile | 11 +- cmd/docker-gen/main.go | 2 +- example.conf => examples/example.conf | 0 go.mod | 24 +- go.sum | 207 ++++++++---------- config.go => internal/dockergen/config.go | 0 .../dockergen/config_test.go | 0 context.go => internal/dockergen/context.go | 0 .../dockergen/context_test.go | 0 .../dockergen/docker_client.go | 0 .../dockergen/docker_client_test.go | 0 .../dockergen/generator.go | 0 .../dockergen/generator_test.go | 0 reflect.go => internal/dockergen/reflect.go | 0 .../dockergen/reflect_test.go | 0 template.go => internal/dockergen/template.go | 0 .../dockergen/template_test.go | 0 utils.go => internal/dockergen/utils.go | 0 .../dockergen/utils_test.go | 0 22 files changed, 116 insertions(+), 137 deletions(-) rename example.conf => examples/example.conf (100%) rename config.go => internal/dockergen/config.go (100%) rename config_test.go => internal/dockergen/config_test.go (100%) rename context.go => internal/dockergen/context.go (100%) rename context_test.go => internal/dockergen/context_test.go (100%) rename docker_client.go => internal/dockergen/docker_client.go (100%) rename docker_client_test.go => internal/dockergen/docker_client_test.go (100%) rename generator.go => internal/dockergen/generator.go (100%) rename generator_test.go => internal/dockergen/generator_test.go (100%) rename reflect.go => internal/dockergen/reflect.go (100%) rename reflect_test.go => internal/dockergen/reflect_test.go (100%) rename template.go => internal/dockergen/template.go (100%) rename template_test.go => internal/dockergen/template_test.go (100%) rename utils.go => internal/dockergen/utils.go (100%) rename utils_test.go => internal/dockergen/utils_test.go (100%) diff --git a/.dockerignore b/.dockerignore index a9c198a7..3548355e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,10 @@ .git +.github docker-gen dist +examples +LICENSE +Makefile +README.md +templates *.gz diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b8bdd484..a074ed94 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,4 +32,4 @@ jobs: run: make check-gofmt - name: Run tests - run: go test -v + run: go test -v ./internal/dockergen diff --git a/.gitignore b/.gitignore index d76f98b2..0bbffeaf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ docker-gen +!cmd/docker-gen dist *.gz diff --git a/Makefile b/Makefile index 501fb712..3d2a19b5 100644 --- a/Makefile +++ b/Makefile @@ -44,11 +44,16 @@ get-deps: go mod download check-gofmt: - if [ -n "$(shell gofmt -l .)" ]; then \ + if [ -n "$(shell gofmt -l ./cmd/docker-gen)" ]; then \ echo 1>&2 'The following files need to be formatted:'; \ - gofmt -l .; \ + gofmt -l ./cmd/docker-gen; \ + exit 1; \ + fi + if [ -n "$(shell gofmt -l ./internal/dockergen)" ]; then \ + echo 1>&2 'The following files need to be formatted:'; \ + gofmt -l ./internal/dockergen; \ exit 1; \ fi test: - go test + go test ./internal/dockergen diff --git a/cmd/docker-gen/main.go b/cmd/docker-gen/main.go index 2849de80..e66c851b 100644 --- a/cmd/docker-gen/main.go +++ b/cmd/docker-gen/main.go @@ -10,7 +10,7 @@ import ( "github.com/BurntSushi/toml" docker "github.com/fsouza/go-dockerclient" - "github.com/jwilder/docker-gen" + "github.com/nginx-proxy/docker-gen/internal/dockergen" ) type stringslice []string diff --git a/example.conf b/examples/example.conf similarity index 100% rename from example.conf rename to examples/example.conf diff --git a/go.mod b/go.mod index 014d3ea7..f0095160 100644 --- a/go.mod +++ b/go.mod @@ -1,27 +1,9 @@ -module github.com/jwilder/docker-gen +module github.com/nginx-proxy/docker-gen -go 1.11 +go 1.16 require ( - github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect github.com/BurntSushi/toml v0.3.1 - github.com/Microsoft/go-winio v0.4.16 // indirect - github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect - github.com/containerd/continuity v0.0.0-20210315143101-93e15499afd5 // indirect - github.com/docker/docker v1.4.2-0.20171014114940-f2afa2623594 // indirect - github.com/docker/go-connections v0.4.0 // indirect - github.com/docker/go-units v0.3.2 // indirect - github.com/fsouza/go-dockerclient v0.0.0-20171009031830-d2a6d0596004 - github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/go-cmp v0.5.5 // indirect - github.com/gorilla/context v1.1.1 // indirect - github.com/gorilla/mux v0.0.0-20160718151158-d391bea3118c // indirect - github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect - github.com/opencontainers/image-spec v1.0.1 // indirect - github.com/opencontainers/runc v0.1.1 // indirect - github.com/opencontainers/selinux v1.8.0 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect + github.com/fsouza/go-dockerclient v1.7.2 github.com/stretchr/testify v1.7.0 - golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 // indirect - gotest.tools v2.2.0+incompatible // indirect ) diff --git a/go.sum b/go.sum index 00124b0c..5c75226e 100644 --- a/go.sum +++ b/go.sum @@ -4,214 +4,199 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7O github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/Microsoft/hcsshim v0.8.14 h1:lbPVK25c1cu5xTLITwpUcxoA9vKrKErASPYygvouJns= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/containerd/continuity v0.0.0-20210315143101-93e15499afd5 h1:k6Dn7shF+i1q4utvCyW4+o9REsCMAeRyORM5IhXMCnw= -github.com/containerd/continuity v0.0.0-20210315143101-93e15499afd5/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3 h1:ijQT13JedHSHrQGWFcGEwzcNKrAGIiZ+jSD5QQG07SY= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e h1:6JKvHHt396/qabvMhnhUZvWaHZzfVfldxE60TK8YLhg= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +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/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/docker v1.4.2-0.20171014114940-f2afa2623594 h1:RRImSkCnVU1dCcRQ+fZeMWWN0M+rkLNpEnyJDG2krs0= -github.com/docker/docker v1.4.2-0.20171014114940-f2afa2623594/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.3-0.20210216175712-646072ed6524+incompatible h1:Yu2uGErhwEoOT/OxAFe+/SiJCqRLs+pgcS5XKrDXnG4= +github.com/docker/docker v20.10.3-0.20210216175712-646072ed6524+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.2 h1:Kjm80apys7gTtfVmCvVY8gwu10uofaFSrmAKOVrtueE= -github.com/docker/go-units v0.3.2/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsouza/go-dockerclient v0.0.0-20171009031830-d2a6d0596004 h1:quCcA6n6mOYQ+tIh36+uNHt0OOGeZMLWeJvAvGaotWE= -github.com/fsouza/go-dockerclient v0.0.0-20171009031830-d2a6d0596004/go.mod h1:KpcjM623fQYE9MZiTGzKhjfxXAV9wbyX2C1cyRHfhl0= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/fsouza/go-dockerclient v1.7.2 h1:bBEAcqLTkpq205jooP5RVroUKiVEWgGecHyeZc4OFjo= +github.com/fsouza/go-dockerclient v1.7.2/go.mod h1:+ugtMCVRwnPfY7d8/baCzZ3uwB0BrG5DB8OzbtxaRz8= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v0.0.0-20160718151158-d391bea3118c h1:wSp7qUCNBE50iJHB3NevZ5vy8LdBrE0/05iNMadS0r8= -github.com/gorilla/mux v0.0.0-20160718151158-d391bea3118c/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= +github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= +github.com/moby/sys/mountinfo v0.4.0 h1:1KInV3Huv18akCu58V7lzNlt+jFmqlu1EaErnEHE/VM= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 h1:rzf0wL0CHVc8CEsgyygG0Mn9CNCCPZqOPaz8RiiHYQk= +github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/selinux v1.8.0 h1:+77ba4ar4jsCbL1GLbFL8fFM57w6suPfSS9PDLDY7KM= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 h1:rF3Ohx8DRyl8h2zw9qojyLHLhrJpEMgyPOImREEryf0= -golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210216224549-f992740a1bac h1:9glrpwtNjBYgRpb67AZJKHfzj1stG/8BL5H7In2oTC4= +golang.org/x/sys v0.0.0-20210216224549-f992740a1bac/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201113234701-d7a72108b828 h1:htWEtQEuEVJ4tU/Ngx7Cd/4Q7e3A5Up1owgyBtVsTwk= +golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/config.go b/internal/dockergen/config.go similarity index 100% rename from config.go rename to internal/dockergen/config.go diff --git a/config_test.go b/internal/dockergen/config_test.go similarity index 100% rename from config_test.go rename to internal/dockergen/config_test.go diff --git a/context.go b/internal/dockergen/context.go similarity index 100% rename from context.go rename to internal/dockergen/context.go diff --git a/context_test.go b/internal/dockergen/context_test.go similarity index 100% rename from context_test.go rename to internal/dockergen/context_test.go diff --git a/docker_client.go b/internal/dockergen/docker_client.go similarity index 100% rename from docker_client.go rename to internal/dockergen/docker_client.go diff --git a/docker_client_test.go b/internal/dockergen/docker_client_test.go similarity index 100% rename from docker_client_test.go rename to internal/dockergen/docker_client_test.go diff --git a/generator.go b/internal/dockergen/generator.go similarity index 100% rename from generator.go rename to internal/dockergen/generator.go diff --git a/generator_test.go b/internal/dockergen/generator_test.go similarity index 100% rename from generator_test.go rename to internal/dockergen/generator_test.go diff --git a/reflect.go b/internal/dockergen/reflect.go similarity index 100% rename from reflect.go rename to internal/dockergen/reflect.go diff --git a/reflect_test.go b/internal/dockergen/reflect_test.go similarity index 100% rename from reflect_test.go rename to internal/dockergen/reflect_test.go diff --git a/template.go b/internal/dockergen/template.go similarity index 100% rename from template.go rename to internal/dockergen/template.go diff --git a/template_test.go b/internal/dockergen/template_test.go similarity index 100% rename from template_test.go rename to internal/dockergen/template_test.go diff --git a/utils.go b/internal/dockergen/utils.go similarity index 100% rename from utils.go rename to internal/dockergen/utils.go diff --git a/utils_test.go b/internal/dockergen/utils_test.go similarity index 100% rename from utils_test.go rename to internal/dockergen/utils_test.go From 43d66a3f269de3756bc283e3f141479ee2affbcd Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Tue, 3 Aug 2021 19:58:14 +0200 Subject: [PATCH 2/5] style: linting with staticcheck --- cmd/docker-gen/main.go | 3 - internal/dockergen/config.go | 2 +- internal/dockergen/docker_client.go | 10 +-- internal/dockergen/generator.go | 13 ++-- internal/dockergen/generator_test.go | 14 ++-- internal/dockergen/reflect_test.go | 3 +- internal/dockergen/template.go | 10 +-- internal/dockergen/template_test.go | 108 +++++++++++++-------------- 8 files changed, 80 insertions(+), 83 deletions(-) diff --git a/cmd/docker-gen/main.go b/cmd/docker-gen/main.go index e66c851b..bb577ac7 100644 --- a/cmd/docker-gen/main.go +++ b/cmd/docker-gen/main.go @@ -6,7 +6,6 @@ import ( "log" "os" "path/filepath" - "sync" "github.com/BurntSushi/toml" docker "github.com/fsouza/go-dockerclient" @@ -36,8 +35,6 @@ var ( tlsKey string tlsCaCert string tlsVerify bool - tlsCertPath string - wg sync.WaitGroup ) func (strings *stringslice) String() string { diff --git a/internal/dockergen/config.go b/internal/dockergen/config.go index 8d991b03..bd7c9ba1 100644 --- a/internal/dockergen/config.go +++ b/internal/dockergen/config.go @@ -73,7 +73,7 @@ func ParseWait(s string) (*Wait, error) { return nil, err } if max < min { - return nil, errors.New("Invalid wait interval: max must be larger than min") + return nil, errors.New("invalid wait interval: max must be larger than min") } } else { max = 4 * min diff --git a/internal/dockergen/docker_client.go b/internal/dockergen/docker_client.go index e0acddef..51755fb0 100644 --- a/internal/dockergen/docker_client.go +++ b/internal/dockergen/docker_client.go @@ -48,7 +48,7 @@ func parseHost(addr string) (string, string, error) { addr = strings.TrimSpace(addr) switch { case addr == "tcp://": - return "", "", fmt.Errorf("Invalid bind address format: %s", addr) + return "", "", fmt.Errorf("invalid bind address format: %s", addr) case strings.HasPrefix(addr, "unix://"): proto = "unix" addr = strings.TrimPrefix(addr, "unix://") @@ -65,7 +65,7 @@ func parseHost(addr string) (string, string, error) { addr = "/var/run/docker.sock" default: if strings.Contains(addr, "://") { - return "", "", fmt.Errorf("Invalid bind address protocol: %s", addr) + return "", "", fmt.Errorf("invalid bind address protocol: %s", addr) } proto = "tcp" } @@ -73,7 +73,7 @@ func parseHost(addr string) (string, string, error) { if proto != "unix" && strings.Contains(addr, ":") { hostParts := strings.Split(addr, ":") if len(hostParts) != 2 { - return "", "", fmt.Errorf("Invalid bind address format: %s", addr) + return "", "", fmt.Errorf("invalid bind address format: %s", addr) } if hostParts[0] != "" { host = hostParts[0] @@ -84,11 +84,11 @@ func parseHost(addr string) (string, string, error) { if p, err := strconv.Atoi(hostParts[1]); err == nil && p != 0 { port = p } else { - return "", "", fmt.Errorf("Invalid bind address format: %s", addr) + return "", "", fmt.Errorf("invalid bind address format: %s", addr) } } else if proto == "tcp" && !strings.Contains(addr, ":") { - return "", "", fmt.Errorf("Invalid bind address format: %s", addr) + return "", "", fmt.Errorf("invalid bind address format: %s", addr) } else { host = addr } diff --git a/internal/dockergen/generator.go b/internal/dockergen/generator.go index f357befb..28c58444 100644 --- a/internal/dockergen/generator.go +++ b/internal/dockergen/generator.go @@ -11,7 +11,7 @@ import ( "syscall" "time" - "github.com/fsouza/go-dockerclient" + docker "github.com/fsouza/go-dockerclient" ) type generator struct { @@ -41,12 +41,12 @@ type GeneratorConfig struct { func NewGenerator(gc GeneratorConfig) (*generator, error) { endpoint, err := GetEndpoint(gc.Endpoint) if err != nil { - return nil, fmt.Errorf("Bad endpoint: %s", err) + return nil, fmt.Errorf("bad endpoint: %s", err) } client, err := NewDockerClient(endpoint, gc.TLSVerify, gc.TLSCert, gc.TLSCACert, gc.TLSKey) if err != nil { - return nil, fmt.Errorf("Unable to create docker client: %s", err) + return nil, fmt.Errorf("unable to create docker client: %s", err) } apiVersion, err := client.Version() @@ -191,7 +191,7 @@ func (g *generator) generateFromEvents() { watchers = append(watchers, watcher) debouncedChan := newDebounceChannel(watcher, config.Wait) - for _ = range debouncedChan { + for range debouncedChan { containers, err := g.getContainers() if err != nil { log.Printf("Error listing containers: %s\n", err) @@ -367,7 +367,8 @@ func (g *generator) getContainers() ([]*RuntimeContainer, error) { containers := []*RuntimeContainer{} for _, apiContainer := range apiContainers { - container, err := g.Client.InspectContainer(apiContainer.ID) + opts := docker.InspectContainerOptions{ID: apiContainer.ID} + container, err := g.Client.InspectContainerWithOptions(opts) if err != nil { log.Printf("Error inspecting container: %s: %s\n", apiContainer.ID, err) continue @@ -465,7 +466,7 @@ func (g *generator) getContainers() ([]*RuntimeContainer, error) { func newSignalChannel() <-chan os.Signal { sig := make(chan os.Signal, 1) - signal.Notify(sig, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGKILL) + signal.Notify(sig, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) return sig } diff --git a/internal/dockergen/generator_test.go b/internal/dockergen/generator_test.go index 87b8ce71..b36e0cd3 100644 --- a/internal/dockergen/generator_test.go +++ b/internal/dockergen/generator_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "github.com/fsouza/go-dockerclient" + docker "github.com/fsouza/go-dockerclient" dockertest "github.com/fsouza/go-dockerclient/testing" ) @@ -49,7 +49,7 @@ func TestGenerateFromEvents(t *testing.T) { })) server.CustomHandler("/containers/json", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { result := []docker.APIContainers{ - docker.APIContainers{ + { ID: containerID, Image: "base:latest", Command: "/bin/sh", @@ -87,7 +87,7 @@ func TestGenerateFromEvents(t *testing.T) { }, Image: "0ff407d5a7d9ed36acdf3e75de8cc127afecc9af234d05486be2981cdc01a38d", NetworkSettings: &docker.NetworkSettings{ - IPAddress: fmt.Sprintf("10.0.0.10"), + IPAddress: "10.0.0.10", IPPrefixLen: 24, Gateway: "10.0.0.1", Bridge: "docker0", @@ -147,24 +147,24 @@ func TestGenerateFromEvents(t *testing.T) { Endpoint: serverURL, Configs: ConfigFile{ []Config{ - Config{ + { Template: tmplFile.Name(), Dest: destFiles[0].Name(), Watch: false, }, - Config{ + { Template: tmplFile.Name(), Dest: destFiles[1].Name(), Watch: true, Wait: &Wait{0, 0}, }, - Config{ + { Template: tmplFile.Name(), Dest: destFiles[2].Name(), Watch: true, Wait: &Wait{20 * time.Millisecond, 25 * time.Millisecond}, }, - Config{ + { Template: tmplFile.Name(), Dest: destFiles[3].Name(), Watch: true, diff --git a/internal/dockergen/reflect_test.go b/internal/dockergen/reflect_test.go index 49bff70c..5bebf27b 100644 --- a/internal/dockergen/reflect_test.go +++ b/internal/dockergen/reflect_test.go @@ -13,8 +13,7 @@ func TestDeepGetNoPath(t *testing.T) { t.Fail() } - var returned RuntimeContainer - returned = value.(RuntimeContainer) + returned := value.(RuntimeContainer) if !returned.Equals(item) { t.Fail() } diff --git a/internal/dockergen/template.go b/internal/dockergen/template.go index 259a8f88..2e758c01 100644 --- a/internal/dockergen/template.go +++ b/internal/dockergen/template.go @@ -45,7 +45,7 @@ func getArrayValues(funcName string, entries interface{}) (*reflect.Value, error case reflect.Array, reflect.Slice: break default: - return nil, fmt.Errorf("Must pass an array or slice to '%v'; received %v; kind %v", funcName, entries, kind) + return nil, fmt.Errorf("must pass an array or slice to '%v'; received %v; kind %v", funcName, entries, kind) } return &entriesVal, nil } @@ -121,7 +121,7 @@ func groupByLabel(entries interface{}, label string) (map[string][]interface{}, } return nil, nil } - return nil, fmt.Errorf("Must pass an array or slice of RuntimeContainer to 'groupByLabel'; received %v", v) + return nil, fmt.Errorf("must pass an array or slice of RuntimeContainer to 'groupByLabel'; received %v", v) } return generalizedGroupBy("groupByLabel", entries, getLabel, func(groups map[string][]interface{}, value interface{}, v interface{}) { groups[value.(string)] = append(groups[value.(string)], v) @@ -261,7 +261,7 @@ func keys(input interface{}) (interface{}, error) { val := reflect.ValueOf(input) if val.Kind() != reflect.Map { - return nil, fmt.Errorf("Cannot call keys on a non-map value: %v", input) + return nil, fmt.Errorf("cannot call keys on a non-map value: %v", input) } vk := val.MapKeys() @@ -534,7 +534,7 @@ func GenerateFile(config Config, containers Context) bool { log.Fatalf("Unable to create empty destination file: %s\n", err) } else { emptyFile.Close() - fi, err = os.Stat(config.Dest) + fi, _ = os.Stat(config.Dest) } } if err := dest.Chmod(fi.Mode()); err != nil { @@ -549,7 +549,7 @@ func GenerateFile(config Config, containers Context) bool { } } - if bytes.Compare(oldContents, contents) != 0 { + if !bytes.Equal(oldContents, contents) { err = os.Rename(dest.Name(), config.Dest) if err != nil { log.Fatalf("Unable to create dest file %s: %s\n", config.Dest, err) diff --git a/internal/dockergen/template_test.go b/internal/dockergen/template_test.go index 1b991370..a4cce3c4 100644 --- a/internal/dockergen/template_test.go +++ b/internal/dockergen/template_test.go @@ -124,19 +124,19 @@ func TestIntersect(t *testing.T) { func TestGroupByExistingKey(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -163,20 +163,20 @@ func TestGroupByExistingKey(t *testing.T) { func TestGroupByAfterWhere(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", "EXTERNAL": "true", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", "EXTERNAL": "true", @@ -206,28 +206,28 @@ func TestGroupByAfterWhere(t *testing.T) { func TestGroupByLabel(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Labels: map[string]string{ "com.docker.compose.project": "one", }, ID: "1", }, - &RuntimeContainer{ + { Labels: map[string]string{ "com.docker.compose.project": "two", }, ID: "2", }, - &RuntimeContainer{ + { Labels: map[string]string{ "com.docker.compose.project": "one", }, ID: "3", }, - &RuntimeContainer{ + { ID: "4", }, - &RuntimeContainer{ + { Labels: map[string]string{ "com.docker.compose.project": "", }, @@ -261,19 +261,19 @@ func TestGroupByLabel(t *testing.T) { func TestGroupByMulti(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost,demo3.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -306,39 +306,39 @@ func TestGroupByMulti(t *testing.T) { func TestWhere(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", Addresses: []Address{ - Address{ + { IP: "172.16.42.1", Port: "80", Proto: "tcp", }, }, }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, ID: "2", Addresses: []Address{ - Address{ + { IP: "172.16.42.1", Port: "9999", Proto: "tcp", }, }, }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo3.localhost", }, ID: "3", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -371,39 +371,39 @@ func TestWhere(t *testing.T) { func TestWhereNot(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", Addresses: []Address{ - Address{ + { IP: "172.16.42.1", Port: "80", Proto: "tcp", }, }, }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, ID: "2", Addresses: []Address{ - Address{ + { IP: "172.16.42.1", Port: "9999", Proto: "tcp", }, }, }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo3.localhost", }, ID: "3", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -436,27 +436,27 @@ func TestWhereNot(t *testing.T) { func TestWhereExist(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", "VIRTUAL_PATH": "/api", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo3.localhost", "VIRTUAL_PATH": "/api", }, ID: "3", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_PROTO": "https", }, @@ -476,27 +476,27 @@ func TestWhereExist(t *testing.T) { func TestWhereNotExist(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", "VIRTUAL_PATH": "/api", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo3.localhost", "VIRTUAL_PATH": "/api", }, ID: "3", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_PROTO": "https", }, @@ -516,25 +516,25 @@ func TestWhereNotExist(t *testing.T) { func TestWhereSomeMatch(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost,demo4.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "bar,demo3.localhost,foo", }, ID: "3", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -554,25 +554,25 @@ func TestWhereSomeMatch(t *testing.T) { func TestWhereRequires(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost,demo4.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "bar,demo3.localhost,foo", }, ID: "3", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -592,14 +592,14 @@ func TestWhereRequires(t *testing.T) { func TestWhereLabelExists(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Labels: map[string]string{ "com.example.foo": "foo", "com.example.bar": "bar", }, ID: "1", }, - &RuntimeContainer{ + { Labels: map[string]string{ "com.example.bar": "bar", }, @@ -618,14 +618,14 @@ func TestWhereLabelExists(t *testing.T) { func TestWhereLabelDoesNotExist(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Labels: map[string]string{ "com.example.foo": "foo", "com.example.bar": "bar", }, ID: "1", }, - &RuntimeContainer{ + { Labels: map[string]string{ "com.example.bar": "bar", }, @@ -644,14 +644,14 @@ func TestWhereLabelDoesNotExist(t *testing.T) { func TestWhereLabelValueMatches(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Labels: map[string]string{ "com.example.foo": "foo", "com.example.bar": "bar", }, ID: "1", }, - &RuntimeContainer{ + { Labels: map[string]string{ "com.example.bar": "BAR", }, @@ -729,19 +729,19 @@ func TestTrim(t *testing.T) { func TestDict(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost,demo3.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, @@ -769,19 +769,19 @@ func TestSha1(t *testing.T) { func TestJson(t *testing.T) { containers := []*RuntimeContainer{ - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost", }, ID: "1", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo1.localhost,demo3.localhost", }, ID: "2", }, - &RuntimeContainer{ + { Env: map[string]string{ "VIRTUAL_HOST": "demo2.localhost", }, From dd1d8cc9d5024297d477c3241a350bd031665f5f Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Thu, 5 Aug 2021 23:22:12 +0200 Subject: [PATCH 3/5] chore: update repo url in usage() --- cmd/docker-gen/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/docker-gen/main.go b/cmd/docker-gen/main.go index bb577ac7..e7a64c74 100644 --- a/cmd/docker-gen/main.go +++ b/cmd/docker-gen/main.go @@ -66,7 +66,7 @@ Environment Variables: DOCKER_CERT_PATH - directory path containing key.pem, cert.pem and ca.pem DOCKER_TLS_VERIFY - enable client TLS verification `) - println(`For more information, see https://github.com/jwilder/docker-gen`) + println(`For more information, see https://github.com/nginx-proxy/docker-gen`) } func loadConfig(file string) error { From c2595abae9a6005024ab7e28e7a9ee5c288d61b8 Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Fri, 6 Aug 2021 12:52:00 +0200 Subject: [PATCH 4/5] refactor: move pathExists() to utils.go --- internal/dockergen/docker_client.go | 13 ------------- internal/dockergen/utils.go | 12 ++++++++++++ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/internal/dockergen/docker_client.go b/internal/dockergen/docker_client.go index 51755fb0..f2b4afb3 100644 --- a/internal/dockergen/docker_client.go +++ b/internal/dockergen/docker_client.go @@ -3,7 +3,6 @@ package dockergen import ( "errors" "fmt" - "os" "strconv" "strings" @@ -118,15 +117,3 @@ func splitDockerImage(img string) (string, string, string) { return registry, repository, tag } - -// pathExists returns whether the given file or directory exists or not -func pathExists(path string) (bool, error) { - _, err := os.Stat(path) - if err == nil { - return true, nil - } - if os.IsNotExist(err) { - return false, nil - } - return false, err -} diff --git a/internal/dockergen/utils.go b/internal/dockergen/utils.go index a2ccfd1c..a17335fc 100644 --- a/internal/dockergen/utils.go +++ b/internal/dockergen/utils.go @@ -69,3 +69,15 @@ func removeBlankLines(reader io.Reader, writer io.Writer) { bwriter.Flush() } + +// pathExists returns whether the given file or directory exists or not +func pathExists(path string) (bool, error) { + _, err := os.Stat(path) + if err == nil { + return true, nil + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} From aa2a9098852af9fb3ab5ca0f02069ce741bcc2e5 Mon Sep 17 00:00:00 2001 From: Nicolas Duchon Date: Fri, 6 Aug 2021 12:54:18 +0200 Subject: [PATCH 5/5] refactor: replace exists() with pathExists() Both were the exact same function. --- internal/dockergen/template.go | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/internal/dockergen/template.go b/internal/dockergen/template.go index 2e758c01..66520741 100644 --- a/internal/dockergen/template.go +++ b/internal/dockergen/template.go @@ -20,17 +20,6 @@ import ( "text/template" ) -func exists(path string) (bool, error) { - _, err := os.Stat(path) - if err == nil { - return true, nil - } - if os.IsNotExist(err) { - return false, nil - } - return false, err -} - func getArrayValues(funcName string, entries interface{}) (*reflect.Value, error) { entriesVal := reflect.ValueOf(entries) @@ -435,7 +424,7 @@ func newTemplate(name string) *template.Template { "contains": contains, "dict": dict, "dir": dirList, - "exists": exists, + "exists": pathExists, "first": arrayFirst, "groupBy": groupBy, "groupByKeys": groupByKeys,