...

Source file src/sigs.k8s.io/kustomize/api/internal/accumulator/refvartransformer.go

Documentation: sigs.k8s.io/kustomize/api/internal/accumulator

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package accumulator
     5  
     6  import (
     7  	"sigs.k8s.io/kustomize/api/filters/refvar"
     8  	"sigs.k8s.io/kustomize/api/resmap"
     9  	"sigs.k8s.io/kustomize/api/types"
    10  )
    11  
    12  type refVarTransformer struct {
    13  	varMap            map[string]interface{}
    14  	replacementCounts map[string]int
    15  	fieldSpecs        []types.FieldSpec
    16  }
    17  
    18  // newRefVarTransformer returns a new refVarTransformer
    19  // that replaces $(VAR) style variables with values.
    20  // The fieldSpecs are the places to look for occurrences of $(VAR).
    21  func newRefVarTransformer(
    22  	varMap map[string]interface{}, fs []types.FieldSpec) *refVarTransformer {
    23  	return &refVarTransformer{
    24  		varMap:     varMap,
    25  		fieldSpecs: fs,
    26  	}
    27  }
    28  
    29  // UnusedVars returns slice of Var names that were unused
    30  // after a Transform run.
    31  func (rv *refVarTransformer) UnusedVars() []string {
    32  	var unused []string
    33  	for k := range rv.varMap {
    34  		if _, ok := rv.replacementCounts[k]; !ok {
    35  			unused = append(unused, k)
    36  		}
    37  	}
    38  	return unused
    39  }
    40  
    41  // Transform replaces $(VAR) style variables with values.
    42  func (rv *refVarTransformer) Transform(m resmap.ResMap) error {
    43  	rv.replacementCounts = make(map[string]int)
    44  	mf := refvar.MakePrimitiveReplacer(rv.replacementCounts, rv.varMap)
    45  	for _, res := range m.Resources() {
    46  		for _, fieldSpec := range rv.fieldSpecs {
    47  			err := res.ApplyFilter(refvar.Filter{
    48  				MappingFunc: mf,
    49  				FieldSpec:   fieldSpec,
    50  			})
    51  			if err != nil {
    52  				return err
    53  			}
    54  		}
    55  	}
    56  	return nil
    57  }
    58  

View as plain text