diff --git a/pkg/helmexec/exec.go b/pkg/helmexec/exec.go index 0fa711d8..834d09f2 100644 --- a/pkg/helmexec/exec.go +++ b/pkg/helmexec/exec.go @@ -258,10 +258,6 @@ func (helm *execer) SyncRelease(context HelmContext, name, chart string, flags . env["HELM_TILLER_HISTORY_MAX"] = strconv.Itoa(context.HistoryMax) } - if helm.IsHelm3() && helm.postRenderer != "" { - flags = append(flags, "--post-renderer", helm.postRenderer) - } - out, err := helm.exec(append(append(preArgs, "upgrade", "--install", name, chart), flags...), env, nil) helm.write(nil, out) return err @@ -401,9 +397,6 @@ func (helm *execer) TemplateRelease(name string, chart string, flags ...string) args = []string{"template", chart, "--name", name} } - if helm.IsHelm3() && helm.postRenderer != "" { - flags = append(flags, "--post-renderer", helm.postRenderer) - } out, err := helm.exec(append(args, flags...), map[string]string{}, nil) var outputToFile bool @@ -447,10 +440,6 @@ func (helm *execer) DiffRelease(context HelmContext, name, chart string, suppres overrideEnableLiveOutput = &enableLiveOutput } - if helm.IsHelm3() && helm.postRenderer != "" { - flags = append(flags, "--post-renderer", helm.postRenderer) - } - out, err := helm.exec(append(append(preArgs, "diff", "upgrade", "--allow-unreleased", name, chart), flags...), env, overrideEnableLiveOutput) // Do our best to write STDOUT only when diff existed // Unfortunately, this works only when you run helmfile with `--detailed-exitcode` diff --git a/pkg/state/helmx.go b/pkg/state/helmx.go index b1a46508..0aa5a8ab 100644 --- a/pkg/state/helmx.go +++ b/pkg/state/helmx.go @@ -26,6 +26,23 @@ func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) ([]s return flags, nil } +// append post-renderer flags to helm flags +// nolint: unparam +func (st *HelmState) appendPostRenderFlags(flags []string, release *ReleaseSpec, helm helmexec.Interface) ([]string, error) { + if helm.IsHelm3() { + switch { + // helm.GetPostRenderer() comes from cmd flag. + case helm.GetPostRenderer() != "": + flags = append(flags, "--post-renderer", helm.GetPostRenderer()) + case release.PostRenderer != nil && *release.PostRenderer != "": + flags = append(flags, "--post-renderer", *release.PostRenderer) + case st.HelmDefaults.PostRenderer != nil && *st.HelmDefaults.PostRenderer != "": + flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer) + } + } + return flags, nil +} + type Chartify struct { Opts *chartify.ChartifyOpts Clean func() diff --git a/pkg/state/state.go b/pkg/state/state.go index 202b54c2..35a0ca16 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -2521,12 +2521,9 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp return nil, nil, err } - if helm.IsHelm3() && helm.GetPostRenderer() == "" { - if release.PostRenderer != nil && *release.PostRenderer != "" { - flags = append(flags, "--post-renderer", *release.PostRenderer) - } else if st.HelmDefaults.PostRenderer != nil && *st.HelmDefaults.PostRenderer != "" { - flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer) - } + flags, err = st.appendPostRenderFlags(flags, release, helm) + if err != nil { + return nil, nil, err } common, clean, err := st.namespaceAndValuesFlags(helm, release, workerIndex) @@ -2556,12 +2553,9 @@ func (st *HelmState) flagsForTemplate(helm helmexec.Interface, release *ReleaseS flags = st.appendApiVersionsFlags(flags, release) - if helm.IsHelm3() && helm.GetPostRenderer() == "" { - if release.PostRenderer != nil && *release.PostRenderer != "" { - flags = append(flags, "--post-renderer", *release.PostRenderer) - } else if st.HelmDefaults.PostRenderer != nil && *st.HelmDefaults.PostRenderer != "" { - flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer) - } + flags, err = st.appendPostRenderFlags(flags, release, helm) + if err != nil { + return nil, nil, err } common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex) @@ -2605,12 +2599,9 @@ func (st *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSpec, return nil, nil, err } - if helm.IsHelm3() && helm.GetPostRenderer() == "" { - if release.PostRenderer != nil && *release.PostRenderer != "" { - flags = append(flags, "--post-renderer", *release.PostRenderer) - } else if st.HelmDefaults.PostRenderer != nil && *st.HelmDefaults.PostRenderer != "" { - flags = append(flags, "--post-renderer", *st.HelmDefaults.PostRenderer) - } + flags, err = st.appendPostRenderFlags(flags, release, helm) + if err != nil { + return nil, nil, err } common, files, err := st.namespaceAndValuesFlags(helm, release, workerIndex)