From 475a6aa1d01c78359b4b6f2f311d071a7a70d181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Doma=C5=84ski?= Date: Tue, 23 Feb 2021 18:47:06 +0100 Subject: [PATCH] properly parse arguments to Docker container steps (#539) --- go.mod | 1 + pkg/runner/step_context.go | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index c28bafc..8388fd8 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,7 @@ require ( github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c github.com/imdario/mergo v0.3.11 // indirect github.com/joho/godotenv v1.3.0 + github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/mgutz/str v1.2.0 // indirect github.com/morikuni/aec v1.0.0 // indirect diff --git a/pkg/runner/step_context.go b/pkg/runner/step_context.go index 95bc10b..908c783 100644 --- a/pkg/runner/step_context.go +++ b/pkg/runner/step_context.go @@ -11,6 +11,7 @@ import ( "strings" log "github.com/sirupsen/logrus" + "github.com/kballard/go-shellquote" "github.com/nektos/act/pkg/common" "github.com/nektos/act/pkg/container" @@ -241,7 +242,10 @@ func (sc *StepContext) runUsesContainer() common.Executor { step := sc.Step return func(ctx context.Context) error { image := strings.TrimPrefix(step.Uses, "docker://") - cmd := strings.Fields(sc.RunContext.NewExpressionEvaluator().Interpolate(step.With["args"])) + cmd, err := shellquote.Split(sc.RunContext.NewExpressionEvaluator().Interpolate(step.With["args"])) + if err != nil { + return err + } entrypoint := strings.Fields(step.With["entrypoint"]) stepContainer := sc.newStepContainer(ctx, image, cmd, entrypoint) @@ -355,7 +359,10 @@ func (sc *StepContext) runAction(actionDir string, actionPath string) common.Exe }) } - cmd := strings.Fields(step.With["args"]) + cmd, err := shellquote.Split(step.With["args"]) + if err != nil { + return err + } if len(cmd) == 0 { cmd = action.Runs.Args }