@@ -146,14 +146,14 @@ func NewHelmGenerator(name string, fsys fs.FS, chartPath string, client client.C
146146 // because the 'Template' builtin needs that to work properly
147147 if t == nil {
148148 t = template .New (manifest )
149+ t .Option ("missingkey=zero" ).
150+ Funcs (sprig .TxtFuncMap ()).
151+ Funcs (templatex .FuncMap ()).
152+ Funcs (templatex .FuncMapForTemplate (t )).
153+ Funcs (templatex .FuncMapForClient (client ))
149154 } else {
150155 t = t .New (manifest )
151156 }
152- t .Option ("missingkey=zero" ).
153- Funcs (sprig .TxtFuncMap ()).
154- Funcs (templatex .FuncMap ()).
155- Funcs (templatex .FuncMapForTemplate (t )).
156- Funcs (templatex .FuncMapForClient (client ))
157157 if _ , err := t .Parse (string (raw )); err != nil {
158158 return nil , err
159159 }
@@ -167,11 +167,6 @@ func NewHelmGenerator(name string, fsys fs.FS, chartPath string, client client.C
167167 // Note: we use absolute paths (instead of relative ones) as template names
168168 // because the 'Template' builtin needs that to work properly
169169 t = t .New (include )
170- t .Option ("missingkey=zero" ).
171- Funcs (sprig .TxtFuncMap ()).
172- Funcs (templatex .FuncMap ()).
173- Funcs (templatex .FuncMapForTemplate (t )).
174- Funcs (templatex .FuncMapForClient (client ))
175170 if _ , err := t .Parse (string (raw )); err != nil {
176171 return nil , err
177172 }
@@ -180,7 +175,7 @@ func NewHelmGenerator(name string, fsys fs.FS, chartPath string, client client.C
180175 return & g , nil
181176}
182177
183- // Create a new HelmGenerator as TransformableGenerator
178+ // Create a new HelmGenerator as TransformableGenerator.
184179func NewTransformableHelmGenerator (name string , fsys fs.FS , chartPath string , client client.Client , discoveryClient discovery.DiscoveryInterface ) (TransformableGenerator , error ) {
185180 g , err := NewHelmGenerator (name , fsys , chartPath , client , discoveryClient )
186181 if err != nil {
@@ -257,6 +252,14 @@ func (g *HelmGenerator) Generate(namespace string, name string, parameters types
257252 }
258253 }
259254
255+ var t0 * template.Template
256+ if len (g .templates ) > 0 {
257+ t0 , err = g .templates [0 ].Clone ()
258+ if err != nil {
259+ return nil , err
260+ }
261+ t0 .Option ("missingkey=zero" )
262+ }
260263 for _ , t := range g .templates {
261264 data ["Template" ] = & helm.TemplateData {
262265 Name : t .Name (),
@@ -272,7 +275,7 @@ func (g *HelmGenerator) Generate(namespace string, name string, parameters types
272275 }(t .Name ()),
273276 }
274277 var buf bytes.Buffer
275- if err := t . Execute (& buf , data ); err != nil {
278+ if err := t0 . ExecuteTemplate (& buf , t . Name () , data ); err != nil {
276279 return nil , err
277280 }
278281 decoder := utilyaml .NewYAMLToJSONDecoder (& buf )
0 commit comments