diff options
author | Tyler Cipriani <tcipriani@wikimedia.org> | 2017-09-14 16:57:25 -0600 |
---|---|---|
committer | Tyler Cipriani <tcipriani@wikimedia.org> | 2017-10-10 12:16:58 -0600 |
commit | 01f3533a0b4819ce868d4f89c83a090eae6cfd08 (patch) | |
tree | eff099425ba495b56312a4b0eb0e466758386b2c /docker | |
parent | 8ff4d41552d527eec484a07b76d764e52559e340 (diff) | |
download | blubber-01f3533a0b4819ce868d4f89c83a090eae6cfd08.tar.gz |
Move error handling to main
Summary:
Rather than calling `log.Fatal` in `Compile` bubble the error up to
`main` and handle it there.
Test Plan: go test ./...
Reviewers: dduvall, #release-engineering-team
Reviewed By: dduvall, #release-engineering-team
Tags: #release-engineering-team
Differential Revision: https://phabricator.wikimedia.org/D784
Diffstat (limited to 'docker')
-rw-r--r-- | docker/compiler.go | 15 | ||||
-rw-r--r-- | docker/compiler_test.go | 9 |
2 files changed, 14 insertions, 10 deletions
diff --git a/docker/compiler.go b/docker/compiler.go index e23731c..79f179e 100644 --- a/docker/compiler.go +++ b/docker/compiler.go @@ -2,20 +2,20 @@ package docker import ( "bytes" - "log" "strings" "phabricator.wikimedia.org/source/blubber/build" "phabricator.wikimedia.org/source/blubber/config" ) -func Compile(cfg *config.Config, variant string) *bytes.Buffer { +// Compile blubber yaml file into Dockerfile +func Compile(cfg *config.Config, variant string) (*bytes.Buffer, error) { buffer := new(bytes.Buffer) vcfg, err := config.ExpandVariant(cfg, variant) if err != nil { - log.Fatal(err) + return nil, err } // omit the main stage name unless multi-stage is required below @@ -25,15 +25,16 @@ func Compile(cfg *config.Config, variant string) *bytes.Buffer { for _, stage := range vcfg.VariantDependencies() { dependency, err := config.ExpandVariant(cfg, stage) - if err == nil { - CompileStage(buffer, stage, dependency) - mainStage = variant + if err != nil { + return nil, err } + CompileStage(buffer, stage, dependency) + mainStage = variant } CompileStage(buffer, mainStage, vcfg) - return buffer + return buffer, nil } func CompileStage(buffer *bytes.Buffer, stage string, vcfg *config.VariantConfig) { diff --git a/docker/compiler_test.go b/docker/compiler_test.go index ea5009d..04454b4 100644 --- a/docker/compiler_test.go +++ b/docker/compiler_test.go @@ -18,7 +18,8 @@ func TestSingleStageHasNoName(t *testing.T) { assert.Nil(t, err) - dockerfile := docker.Compile(cfg, "development").String() + dockerOut, _ := docker.Compile(cfg, "development") + dockerfile := dockerOut.String() assert.Contains(t, dockerfile, "FROM foo/bar\n") } @@ -36,7 +37,8 @@ func TestMultiStageIncludesStageNames(t *testing.T) { assert.Nil(t, err) - dockerfile := docker.Compile(cfg, "production").String() + dockerOut, _ := docker.Compile(cfg, "production") + dockerfile := dockerOut.String() assert.Contains(t, dockerfile, "FROM foo/bar AS build\n") assert.Contains(t, dockerfile, "FROM foo/bar AS production\n") @@ -61,7 +63,8 @@ func TestMultipleArtifactsFromSameStage(t *testing.T) { assert.Nil(t, err) - dockerfile := docker.Compile(cfg, "production").String() + dockerOut, _ := docker.Compile(cfg, "production") + dockerfile := dockerOut.String() assert.Contains(t, dockerfile, "FROM foo/bar AS build\n") assert.Contains(t, dockerfile, "FROM foo/bar AS production\n") |