Browse code

Merge pull request #3367 from cpuguy83/3362-unify_cmd_entrypoint_handling

Use same error handling while unmarshalling args for CMD and ENTRYPOINT

Victor Vieux authored on 2014/01/07 03:29:37
Showing 2 changed files
... ...
@@ -213,16 +213,30 @@ func (b *buildFile) CmdEnv(args string) error {
213 213
 	return b.commit("", b.config.Cmd, fmt.Sprintf("ENV %s", replacedVar))
214 214
 }
215 215
 
216
-func (b *buildFile) CmdCmd(args string) error {
216
+func (b *buildFile) buildCmdFromJson(args string) []string {
217 217
 	var cmd []string
218 218
 	if err := json.Unmarshal([]byte(args), &cmd); err != nil {
219
-		utils.Debugf("Error unmarshalling: %s, setting cmd to /bin/sh -c", err)
219
+		utils.Debugf("Error unmarshalling: %s, setting to /bin/sh -c", err)
220 220
 		cmd = []string{"/bin/sh", "-c", args}
221 221
 	}
222
-	if err := b.commit("", cmd, fmt.Sprintf("CMD %v", cmd)); err != nil {
222
+	return cmd
223
+}
224
+
225
+func (b *buildFile) CmdCmd(args string) error {
226
+	cmd := b.buildCmdFromJson(args)
227
+	b.config.Cmd = cmd
228
+	if err := b.commit("", b.config.Cmd, fmt.Sprintf("CMD %v", cmd)); err != nil {
229
+		return err
230
+	}
231
+	return nil
232
+}
233
+
234
+func (b *buildFile) CmdEntrypoint(args string) error {
235
+	entrypoint := b.buildCmdFromJson(args)
236
+	b.config.Entrypoint = entrypoint
237
+	if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %v", entrypoint)); err != nil {
223 238
 		return err
224 239
 	}
225
-	b.config.Cmd = cmd
226 240
 	return nil
227 241
 }
228 242
 
... ...
@@ -245,23 +259,6 @@ func (b *buildFile) CmdCopy(args string) error {
245 245
 	return fmt.Errorf("COPY has been deprecated. Please use ADD instead")
246 246
 }
247 247
 
248
-func (b *buildFile) CmdEntrypoint(args string) error {
249
-	if args == "" {
250
-		return fmt.Errorf("Entrypoint cannot be empty")
251
-	}
252
-
253
-	var entrypoint []string
254
-	if err := json.Unmarshal([]byte(args), &entrypoint); err != nil {
255
-		b.config.Entrypoint = []string{"/bin/sh", "-c", args}
256
-	} else {
257
-		b.config.Entrypoint = entrypoint
258
-	}
259
-	if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %s", args)); err != nil {
260
-		return err
261
-	}
262
-	return nil
263
-}
264
-
265 248
 func (b *buildFile) CmdWorkdir(workdir string) error {
266 249
 	b.config.WorkingDir = workdir
267 250
 	return b.commit("", b.config.Cmd, fmt.Sprintf("WORKDIR %v", workdir))
... ...
@@ -391,6 +391,8 @@ func TestBuildEntrypoint(t *testing.T) {
391 391
 	}
392 392
 
393 393
 	if img.Config.Entrypoint[0] != "/bin/echo" {
394
+		t.Log(img.Config.Entrypoint[0])
395
+		t.Fail()
394 396
 	}
395 397
 }
396 398