From 1a90b2fd363bec5f9b57c1cd829ceb5890270f8c Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Mon, 27 Aug 2018 11:22:28 -0400 Subject: allow specification of entrypoint in the form of a slice Signed-off-by: Daniel J Walsh Closes: #1352 Approved by: mheon --- cmd/podman/create.go | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'cmd/podman/create.go') diff --git a/cmd/podman/create.go b/cmd/podman/create.go index 95b7a8bed..78b206543 100644 --- a/cmd/podman/create.go +++ b/cmd/podman/create.go @@ -316,6 +316,26 @@ func isPortInImagePorts(exposedPorts map[string]struct{}, port string) bool { return false } +func configureEntrypoint(c *cli.Context, data *inspect.ImageData) []string { + entrypoint := []string{} + if c.IsSet("entrypoint") { + // Force entrypoint to "" + if c.String("entrypoint") == "" { + return entrypoint + } + // Check if entrypoint specified is json + if err := json.Unmarshal([]byte(c.String("entrypoint")), &entrypoint); err == nil { + return entrypoint + } + // Return entrypoint as a single command + return []string{c.String("entrypoint")} + } + if data != nil { + return data.ContainerConfig.Entrypoint + } + return entrypoint +} + // Parses CLI options related to container creation into a config which can be // parsed into an OCI runtime spec func parseCreateOpts(ctx context.Context, c *cli.Context, runtime *libpod.Runtime, imageName string, data *inspect.ImageData) (*cc.CreateConfig, error) { @@ -555,16 +575,7 @@ func parseCreateOpts(ctx context.Context, c *cli.Context, runtime *libpod.Runtim workDir = data.ContainerConfig.WorkingDir } - // ENTRYPOINT - // User input entrypoint takes priority over image entrypoint - entrypoint := c.StringSlice("entrypoint") - if len(entrypoint) == 0 && data != nil { - entrypoint = data.ContainerConfig.Entrypoint - } - // if entrypoint=, we need to clear the entrypoint - if len(entrypoint) == 1 && c.IsSet("entrypoint") && strings.Join(c.StringSlice("entrypoint"), "") == "" { - entrypoint = []string{} - } + entrypoint := configureEntrypoint(c, data) // Build the command // If we have an entry point, it goes first if len(entrypoint) > 0 { -- cgit v1.2.3-54-g00ecf