Files
buildx/policy/input_unknowns.go
T
Tonis Tiigi 4880756a0f policy: simplify recursive material resolution
Unify root/material unknown resolution with recursive Input traversal.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-02-26 09:14:25 -08:00

48 lines
941 B
Go

package policy
import (
"fmt"
"strings"
)
func (inp *Input) setUnknowns(unknowns []string) {
if inp == nil {
return
}
if len(unknowns) == 0 {
inp.unknowns = nil
return
}
out := make([]string, 0, len(unknowns))
for _, u := range unknowns {
v := strings.TrimPrefix(u, "input.")
if v == "" {
continue
}
out = append(out, v)
}
inp.unknowns = out
}
func (inp Input) Unknowns() []string {
var refs []string
collectInputUnknowns(inp, "input", &refs)
return refs
}
func collectInputUnknowns(inp Input, prefix string, refs *[]string) {
for _, u := range inp.unknowns {
if u == "" {
continue
}
*refs = append(*refs, prefix+"."+u)
}
if inp.Image == nil || inp.Image.Provenance == nil {
return
}
for i := range inp.Image.Provenance.Materials {
childPrefix := fmt.Sprintf("%s.image.provenance.materials[%d]", prefix, i)
collectInputUnknowns(inp.Image.Provenance.Materials[i], childPrefix, refs)
}
}