summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorTyler Cipriani <tcipriani@wikimedia.org>2017-09-14 16:57:25 -0600
committerTyler Cipriani <tcipriani@wikimedia.org>2017-10-10 12:16:58 -0600
commit01f3533a0b4819ce868d4f89c83a090eae6cfd08 (patch)
treeeff099425ba495b56312a4b0eb0e466758386b2c /docker
parent8ff4d41552d527eec484a07b76d764e52559e340 (diff)
downloadblubber-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.go15
-rw-r--r--docker/compiler_test.go9
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")