Handle rebuilds when resources passed to transform.Unmarshal etc. changes

Fixes #12065
This commit is contained in:
Bjørn Erik Pedersen
2024-02-19 11:32:28 +01:00
parent 5ada27bf65
commit 5dbc29dc6c
4 changed files with 57 additions and 1 deletions

View File

@@ -150,6 +150,30 @@ func (t *templateExecHelper) GetMethod(ctx context.Context, tmpl texttemplate.Pr
return fn, zero
}
func (t *templateExecHelper) OnCalled(ctx context.Context, tmpl texttemplate.Preparer, name string, args []reflect.Value, result reflect.Value) {
if !t.running {
return
}
// This switch is mostly for speed.
switch name {
case "Unmarshal":
default:
return
}
idm := tpl.Context.GetDependencyManagerInCurrentScope(ctx)
if idm == nil {
return
}
for _, arg := range args {
identity.WalkIdentitiesShallow(arg.Interface(), func(level int, id identity.Identity) bool {
idm.AddIdentity(id)
return false
})
}
}
func (t *templateExecHelper) trackDependencies(ctx context.Context, tmpl texttemplate.Preparer, name string, receiver reflect.Value) context.Context {
if tmpl == nil {
panic("must provide a template")