From 323c4b5211ecef4cffcbe0a97811ddd93c469164 Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Fri, 27 Dec 2013 21:06:26 -0500 Subject: [PATCH] Use same error handling while unmarshalling args for CMD and ENTRYPOINT --- buildfile.go | 39 ++++++++++++++++------------------- integration/buildfile_test.go | 2 ++ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/buildfile.go b/buildfile.go index fb97f26dcc..ca35fc58e4 100644 --- a/buildfile.go +++ b/buildfile.go @@ -271,16 +271,30 @@ func (b *buildFile) CmdEnv(args string) error { return b.commit("", b.config.Cmd, fmt.Sprintf("ENV %s", replacedVar)) } -func (b *buildFile) CmdCmd(args string) error { +func (b *buildFile) buildCmdFromJson(args string) []string { var cmd []string if err := json.Unmarshal([]byte(args), &cmd); err != nil { - utils.Debugf("Error unmarshalling: %s, setting cmd to /bin/sh -c", err) + utils.Debugf("Error unmarshalling: %s, setting to /bin/sh -c", err) cmd = []string{"/bin/sh", "-c", args} } - if err := b.commit("", cmd, fmt.Sprintf("CMD %v", cmd)); err != nil { + return cmd +} + +func (b *buildFile) CmdCmd(args string) error { + cmd := b.buildCmdFromJson(args) + b.config.Cmd = cmd + if err := b.commit("", b.config.Cmd, fmt.Sprintf("CMD %v", cmd)); err != nil { + return err + } + return nil +} + +func (b *buildFile) CmdEntrypoint(args string) error { + entrypoint := b.buildCmdFromJson(args) + b.config.Entrypoint = entrypoint + if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %v", entrypoint)); err != nil { return err } - b.config.Cmd = cmd return nil } @@ -303,23 +317,6 @@ func (b *buildFile) CmdCopy(args string) error { return fmt.Errorf("COPY has been deprecated. Please use ADD instead") } -func (b *buildFile) CmdEntrypoint(args string) error { - if args == "" { - return fmt.Errorf("Entrypoint cannot be empty") - } - - var entrypoint []string - if err := json.Unmarshal([]byte(args), &entrypoint); err != nil { - b.config.Entrypoint = []string{"/bin/sh", "-c", args} - } else { - b.config.Entrypoint = entrypoint - } - if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %s", args)); err != nil { - return err - } - return nil -} - func (b *buildFile) CmdWorkdir(workdir string) error { b.config.WorkingDir = workdir return b.commit("", b.config.Cmd, fmt.Sprintf("WORKDIR %v", workdir)) diff --git a/integration/buildfile_test.go b/integration/buildfile_test.go index dccee4a8d3..89878926ed 100644 --- a/integration/buildfile_test.go +++ b/integration/buildfile_test.go @@ -391,6 +391,8 @@ func TestBuildEntrypoint(t *testing.T) { } if img.Config.Entrypoint[0] != "/bin/echo" { + t.Log(img.Config.Entrypoint[0]) + t.Fail() } }