Skip to content

Commit 1f294d3

Browse files
authored
Merge pull request #381 from nginx-proxy/restructure-2
Further re-organize the project structure
2 parents 02cefb1 + 025381d commit 1f294d3

27 files changed

+2008
-1866
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ jobs:
3232
run: make check-gofmt
3333

3434
- name: Run tests
35-
run: go test -v ./internal/dockergen
35+
run: go test -v ./internal/...

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ get-deps:
4444
go mod download
4545

4646
check-gofmt:
47-
if [ -n "$(shell gofmt -l ./cmd/docker-gen)" ]; then \
47+
if [ -n "$(shell go fmt ./cmd/...)" ]; then \
4848
echo 1>&2 'The following files need to be formatted:'; \
4949
gofmt -l ./cmd/docker-gen; \
5050
exit 1; \
5151
fi
52-
if [ -n "$(shell gofmt -l ./internal/dockergen)" ]; then \
52+
if [ -n "$(shell go fmt ./internal/...)" ]; then \
5353
echo 1>&2 'The following files need to be formatted:'; \
5454
gofmt -l ./internal/dockergen; \
5555
exit 1; \
5656
fi
5757

5858
test:
59-
go test ./internal/dockergen
59+
go test ./internal/...

cmd/docker-gen/main.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import (
1111

1212
"github.com/BurntSushi/toml"
1313
docker "github.com/fsouza/go-dockerclient"
14-
"github.com/nginx-proxy/docker-gen/internal/dockergen"
14+
"github.com/nginx-proxy/docker-gen/internal/config"
15+
"github.com/nginx-proxy/docker-gen/internal/generator"
1516
)
1617

1718
type stringslice []string
@@ -29,7 +30,7 @@ var (
2930
onlyPublished bool
3031
includeStopped bool
3132
configFiles stringslice
32-
configs dockergen.ConfigFile
33+
configs config.ConfigFile
3334
interval int
3435
keepBlankLines bool
3536
endpoint string
@@ -139,11 +140,11 @@ func main() {
139140
}
140141
}
141142
} else {
142-
w, err := dockergen.ParseWait(wait)
143+
w, err := config.ParseWait(wait)
143144
if err != nil {
144145
log.Fatalf("Error parsing wait interval: %s\n", err)
145146
}
146-
config := dockergen.Config{
147+
cfg := config.Config{
147148
Template: flag.Arg(0),
148149
Dest: flag.Arg(1),
149150
Watch: watch,
@@ -158,10 +159,10 @@ func main() {
158159
KeepBlankLines: keepBlankLines,
159160
}
160161
if notifyContainerID != "" {
161-
config.NotifyContainers[notifyContainerID] = notifyContainerSignal
162+
cfg.NotifyContainers[notifyContainerID] = notifyContainerSignal
162163
}
163-
configs = dockergen.ConfigFile{
164-
Config: []dockergen.Config{config}}
164+
configs = config.ConfigFile{
165+
Config: []config.Config{cfg}}
165166
}
166167

167168
all := true
@@ -171,7 +172,7 @@ func main() {
171172
}
172173
}
173174

174-
generator, err := dockergen.NewGenerator(dockergen.GeneratorConfig{
175+
generator, err := generator.NewGenerator(generator.GeneratorConfig{
175176
Endpoint: endpoint,
176177
TLSKey: tlsKey,
177178
TLSCert: tlsCert,

internal/dockergen/config.go renamed to internal/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dockergen
1+
package config
22

33
import (
44
"errors"

internal/dockergen/config_test.go renamed to internal/config/config_test.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
1-
package dockergen
1+
package config
22

33
import (
44
"testing"
55

66
"github.com/stretchr/testify/assert"
77
)
88

9+
func TestFilterWatches(t *testing.T) {
10+
testConfigFile := &ConfigFile{
11+
Config: []Config{
12+
{Template: "foo", Watch: true},
13+
{Template: "bar"},
14+
{Template: "baz", Watch: true},
15+
},
16+
}
17+
18+
expected := []Config{
19+
{Template: "foo", Watch: true},
20+
{Template: "baz", Watch: true},
21+
}
22+
23+
configFile := testConfigFile.FilterWatches()
24+
assert.Equal(t, expected, configFile.Config)
25+
}
26+
927
func TestParseWait(t *testing.T) {
1028
incorrectIntervals := []string{
1129
"500x", // Incorrect min interval

internal/dockergen/context.go renamed to internal/context/context.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dockergen
1+
package context
22

33
import (
44
"bufio"
@@ -8,6 +8,7 @@ import (
88
"sync"
99

1010
docker "github.com/fsouza/go-dockerclient"
11+
"github.com/nginx-proxy/docker-gen/internal/utils"
1112
)
1213

1314
var (
@@ -19,7 +20,7 @@ var (
1920
type Context []*RuntimeContainer
2021

2122
func (c *Context) Env() map[string]string {
22-
return splitKeyValueSlice(os.Environ())
23+
return utils.SplitKeyValueSlice(os.Environ())
2324
}
2425

2526
func (c *Context) Docker() Docker {

internal/dockergen/context_test.go renamed to internal/context/context_test.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dockergen
1+
package context
22

33
import (
44
"fmt"
@@ -163,3 +163,39 @@ func TestPublishedAddresses(t *testing.T) {
163163

164164
assert.ElementsMatch(t, expected, container.PublishedAddresses())
165165
}
166+
167+
func TestRuntimeContainerEquals(t *testing.T) {
168+
rc1 := &RuntimeContainer{
169+
ID: "baz",
170+
Image: DockerImage{
171+
Registry: "foo/bar",
172+
},
173+
}
174+
rc2 := &RuntimeContainer{
175+
ID: "baz",
176+
Name: "qux",
177+
Image: DockerImage{
178+
Registry: "foo/bar",
179+
},
180+
}
181+
assert.True(t, rc1.Equals(*rc2))
182+
assert.True(t, rc2.Equals(*rc1))
183+
184+
rc2.Image.Tag = "quux"
185+
assert.False(t, rc1.Equals(*rc2))
186+
assert.False(t, rc2.Equals(*rc1))
187+
}
188+
189+
func TestDockerImageString(t *testing.T) {
190+
image := &DockerImage{Repository: "foo/bar"}
191+
assert.Equal(t, "foo/bar", image.String())
192+
193+
image.Registry = "baz.io"
194+
assert.Equal(t, "baz.io/foo/bar", image.String())
195+
196+
image.Tag = "qux"
197+
assert.Equal(t, "baz.io/foo/bar:qux", image.String())
198+
199+
image.Registry = ""
200+
assert.Equal(t, "foo/bar:qux", image.String())
201+
}

internal/dockergen/docker_client.go renamed to internal/dockerclient/docker_cli.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,40 @@
1-
package dockergen
1+
package dockerclient
22

33
import (
44
"errors"
55
"fmt"
6+
"os"
67
"strconv"
78
"strings"
89

910
docker "github.com/fsouza/go-dockerclient"
11+
"github.com/nginx-proxy/docker-gen/internal/utils"
1012
)
1113

14+
func GetEndpoint(endpoint string) (string, error) {
15+
defaultEndpoint := "unix:///var/run/docker.sock"
16+
if os.Getenv("DOCKER_HOST") != "" {
17+
defaultEndpoint = os.Getenv("DOCKER_HOST")
18+
}
19+
20+
if endpoint != "" {
21+
defaultEndpoint = endpoint
22+
}
23+
24+
_, _, err := parseHost(defaultEndpoint)
25+
if err != nil {
26+
return "", err
27+
}
28+
29+
return defaultEndpoint, nil
30+
}
31+
1232
func NewDockerClient(endpoint string, tlsVerify bool, tlsCert, tlsCaCert, tlsKey string) (*docker.Client, error) {
1333
if strings.HasPrefix(endpoint, "unix:") {
1434
return docker.NewClient(endpoint)
1535
} else if tlsVerify || tlsEnabled(tlsCert, tlsCaCert, tlsKey) {
1636
if tlsVerify {
17-
if e, err := pathExists(tlsCaCert); !e || err != nil {
37+
if e, err := utils.PathExists(tlsCaCert); !e || err != nil {
1838
return nil, errors.New("TLS verification was requested, but CA cert does not exist")
1939
}
2040
}
@@ -26,7 +46,7 @@ func NewDockerClient(endpoint string, tlsVerify bool, tlsCert, tlsCaCert, tlsKey
2646

2747
func tlsEnabled(tlsCert, tlsCaCert, tlsKey string) bool {
2848
for _, v := range []string{tlsCert, tlsCaCert, tlsKey} {
29-
if e, err := pathExists(v); e && err == nil {
49+
if e, err := utils.PathExists(v); e && err == nil {
3050
return true
3151
}
3252
}
@@ -98,7 +118,7 @@ func parseHost(addr string) (string, string, error) {
98118
return proto, fmt.Sprintf("%s:%d", host, port), nil
99119
}
100120

101-
func splitDockerImage(img string) (string, string, string) {
121+
func SplitDockerImage(img string) (string, string, string) {
102122
index := 0
103123
repository := img
104124
var registry, tag string

0 commit comments

Comments
 (0)