diff --git a/pkg/app/desired_state_file_loader.go b/pkg/app/desired_state_file_loader.go index a72d3e6d..76fa81f5 100644 --- a/pkg/app/desired_state_file_loader.go +++ b/pkg/app/desired_state_file_loader.go @@ -249,6 +249,14 @@ func (ld *desiredStateLoader) load(env, overrodeEnv *environment.Environment, ba finalState.RenderedValues = currentState.RenderedValues } + if len(finalState.HelmDefaults.PostRendererArgs) > 0 { + for i := range finalState.Releases { + if len(finalState.Releases[i].PostRendererArgs) == 0 { + finalState.Releases[i].PostRendererArgs = finalState.HelmDefaults.PostRendererArgs + } + } + finalState.HelmDefaults.PostRendererArgs = nil + } env = &finalState.Env ld.logger.Debugf("merged environment: %v", env) diff --git a/pkg/state/release.go b/pkg/state/release.go index 5cedcf91..c1b5c437 100644 --- a/pkg/state/release.go +++ b/pkg/state/release.go @@ -90,6 +90,18 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R result.Labels[key] = s.String() } + { + postRendererArgs := []string{} + for _, ts := range result.PostRendererArgs { + postRendererArg, err := renderer.RenderTemplateContentToString([]byte(ts)) + if err != nil { + return nil, fmt.Errorf("failed executing template expressions in release \"%s\".postRendererArgs = \"%s\": %v", r.Name, ts, err) + } + postRendererArgs = append(postRendererArgs, postRendererArg) + } + result.PostRendererArgs = postRendererArgs + } + if len(result.ValuesTemplate) > 0 { for i, t := range result.ValuesTemplate { switch ts := t.(type) { diff --git a/pkg/state/state_exec_tmpl_test.go b/pkg/state/state_exec_tmpl_test.go index 91efe615..2bb57b0a 100644 --- a/pkg/state/state_exec_tmpl_test.go +++ b/pkg/state/state_exec_tmpl_test.go @@ -123,6 +123,29 @@ func TestHelmState_executeTemplates(t *testing.T) { Values: []any{map[string]any{"key": "app-val0"}}, }, }, + { + name: "Has template expressions in post renderer args", + input: ReleaseSpec{ + Chart: "test-chart", + PostRendererArgs: []string{ + "--release", + "{{ .Release.Name }}", + "--chart", + "{{ .Release.Chart }}", + }, + Name: "test-release", + }, + want: ReleaseSpec{ + Chart: "test-chart", + Name: "test-release", + PostRendererArgs: []string{ + "--release", + "test-chart-dev", + "--chart", + "test-chart", + }, + }, + }, } for i := range tests {