diff --git a/pkg/helmexec/exec.go b/pkg/helmexec/exec.go index 93ac1687..88feb15e 100644 --- a/pkg/helmexec/exec.go +++ b/pkg/helmexec/exec.go @@ -133,18 +133,22 @@ func New(helmBinary string, enableLiveOutput bool, logger *zap.SugaredLogger, ku func (helm *execer) SetExtraArgs(args ...string) { var extraArgs []string - - // reset the postRenderers and filter the post-renderer args from args and put into helm.postRenderers - helm.postRenderers = nil - for _, arg := range args { - if strings.HasPrefix(arg, "--post-renderer=") || strings.HasPrefix(arg, "--post-renderer-args=") { - helm.postRenderers = append(helm.postRenderers, arg) - continue + var renderArgs []string + // reset the postRenderers and filter --post-renderer=xx or --post-renderer xxx from args and put into helm.postRenderers + for i := 0; i < len(args); i++ { + if strings.HasPrefix(args[i], "--post-renderer=") || strings.HasPrefix(args[i], "--post-renderer-args=") { + renderArgs = append(renderArgs, args[i]) + } else if (args[i] == "--post-renderer" || args[i] == "--post-renderer-args") && i < len(args)-1 { + renderArgs = append(renderArgs, args[i]) + renderArgs = append(renderArgs, args[i+1]) + i++ + } else { + extraArgs = append(extraArgs, args[i]) } - extraArgs = append(extraArgs, arg) } helm.extra = extraArgs + helm.postRenderers = renderArgs } func (helm *execer) SetHelmBinary(bin string) { @@ -263,7 +267,7 @@ func (helm *execer) SyncRelease(context HelmContext, name, chart string, flags . } else { env["HELM_TILLER_HISTORY_MAX"] = strconv.Itoa(context.HistoryMax) } - + if helm.IsHelm3() { flags = append(flags, helm.postRenderers...) } diff --git a/pkg/helmexec/exec_test.go b/pkg/helmexec/exec_test.go index 31a21f44..27a765dd 100644 --- a/pkg/helmexec/exec_test.go +++ b/pkg/helmexec/exec_test.go @@ -69,6 +69,29 @@ func Test_SetExtraArgs(t *testing.T) { if !reflect.DeepEqual(helm.extra, []string{"alpha", "beta"}) { t.Error("helmexec.SetExtraArgs() - two extra arguments missing (overwriting the previous value)") } + + helm.SetExtraArgs("--post-renderer=aaa") + fmt.Println(helm.postRenderers) + if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer=aaa"}) { + t.Error("helmexec.SetExtraArgs() - post-renderer assign arguments missing ") + } + + helm.SetExtraArgs("--post-renderer", "aaa") + fmt.Println(helm.postRenderers) + if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer", "aaa"}) { + t.Error("helmexec.SetExtraArgs() - post-renderer blank arguments missing ") + } + + helm.SetExtraArgs("--post-renderer-args=bbb") + fmt.Println(helm.postRenderers) + if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer-args=bbb"}) { + t.Error("helmexec.SetExtraArgs() - post-renderer-args assign arguments missing") + } + + helm.SetExtraArgs("--post-renderer", "aaa", "--post-renderer-args=bbb") + if !reflect.DeepEqual(helm.postRenderers, []string{"--post-renderer", "aaa", "--post-renderer-args=bbb"}) { + t.Error("helmexec.SetExtraArgs() - post-renderer arguments not be set correct") + } } func Test_SetHelmBinary(t *testing.T) {