mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package accumulator
|
|
|
|
import (
|
|
"sigs.k8s.io/kustomize/api/filters/refvar"
|
|
"sigs.k8s.io/kustomize/api/resmap"
|
|
"sigs.k8s.io/kustomize/api/types"
|
|
)
|
|
|
|
type refVarTransformer struct {
|
|
varMap map[string]interface{}
|
|
replacementCounts map[string]int
|
|
fieldSpecs []types.FieldSpec
|
|
}
|
|
|
|
// newRefVarTransformer returns a new refVarTransformer
|
|
// that replaces $(VAR) style variables with values.
|
|
// The fieldSpecs are the places to look for occurrences of $(VAR).
|
|
func newRefVarTransformer(
|
|
varMap map[string]interface{}, fs []types.FieldSpec) *refVarTransformer {
|
|
return &refVarTransformer{
|
|
varMap: varMap,
|
|
fieldSpecs: fs,
|
|
}
|
|
}
|
|
|
|
// UnusedVars returns slice of Var names that were unused
|
|
// after a Transform run.
|
|
func (rv *refVarTransformer) UnusedVars() []string {
|
|
var unused []string
|
|
for k := range rv.varMap {
|
|
if _, ok := rv.replacementCounts[k]; !ok {
|
|
unused = append(unused, k)
|
|
}
|
|
}
|
|
return unused
|
|
}
|
|
|
|
// Transform replaces $(VAR) style variables with values.
|
|
func (rv *refVarTransformer) Transform(m resmap.ResMap) error {
|
|
rv.replacementCounts = make(map[string]int)
|
|
mf := refvar.MakePrimitiveReplacer(rv.replacementCounts, rv.varMap)
|
|
for _, res := range m.Resources() {
|
|
for _, fieldSpec := range rv.fieldSpecs {
|
|
err := res.ApplyFilter(refvar.Filter{
|
|
MappingFunc: mf,
|
|
FieldSpec: fieldSpec,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|