diff --git a/.drone.yml b/.drone.yml index 31c33a9..0fc3103 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,6 +8,8 @@ pipeline: commands: - go get -u github.com/golang/dep/cmd/dep - dep ensure + - go vet ./... + - go test -cover ./... - sh .drone.sh publish: diff --git a/cmd/drone-docker-ecr/main.go b/cmd/drone-docker-ecr/main.go index 3f518b0..a090e6c 100644 --- a/cmd/drone-docker-ecr/main.go +++ b/cmd/drone-docker-ecr/main.go @@ -55,9 +55,9 @@ func main() { } if create { - err = ensureRepoExists(svc, strings.TrimPrefix(repo, registry)) + err = ensureRepoExists(svc, trimHostname(repo, registry)) if err != nil { - os.Exit(1) + log.Fatal(fmt.Sprintf("error creating ECR repo: %v", err)) } } @@ -75,6 +75,12 @@ func main() { } } +func trimHostname(repo, registry string) string { + repo = strings.TrimPrefix(repo, registry) + repo = strings.TrimLeft(repo, "/") + return repo +} + func ensureRepoExists(svc *ecr.ECR, name string) (err error) { input := &ecr.CreateRepositoryInput{} input.SetRepositoryName(name) diff --git a/cmd/drone-docker-ecr/main_test.go b/cmd/drone-docker-ecr/main_test.go new file mode 100644 index 0000000..5c50ba5 --- /dev/null +++ b/cmd/drone-docker-ecr/main_test.go @@ -0,0 +1,20 @@ +package main + +import "testing" + +func TestTrimHostname(t *testing.T) { + registry := "000000000000.dkr.ecr.us-east-1.amazonaws.com" + // map full repo path to expected repo name + repos := map[string]string{ + registry + "/repo": "repo", + registry + "/namespace/repo": "namespace/repo", + registry + "/namespace/namespace/repo": "namespace/namespace/repo", + } + + for repo, name := range repos { + splitName := trimHostname(repo, registry) + if splitName != name { + t.Errorf("%s is not equal to %s.", splitName, name) + } + } +}