mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-21 22:41:42 +00:00
[doc]: https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher Per this Go modules [doc] a repo or branch that's already tagged v2 or higher should increment the major version (e.g. go to v3) when releasing their first Go module-based packages. At the moment, the kustomize repo has these top level packages in the sigs.k8s.io/kustomize module: - `cmd` - holds main program for kustomize Conceivably someone can depend on this package for integration tests. - `internal` - intentionally unreleased subpackages - `k8sdeps` - an adapter wrapping k8s dependencies This exists only for use in pre-Go-modules kustomize-into-kubectl integration and won't live much longer (as everything involved is switching to Go modules). - `pkg` - kustomize packages for export This should shrink in later versions, since the surface area is too large, containing sub-packages that should be in 'internal'. - `plugin` - holds main programs for plugins This PR changes the top level go.mod file from ``` module sigs.k8s.io/kustomize ``` to ``` module sigs.k8s.io/kustomize/v3 ``` and adjusts all import statements to reflect the change.
103 lines
2.5 KiB
Go
103 lines
2.5 KiB
Go
// Code generated by pluginator on PrefixSuffixTransformer; DO NOT EDIT.
|
|
package builtin
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"sigs.k8s.io/kustomize/v3/pkg/gvk"
|
|
"sigs.k8s.io/kustomize/v3/pkg/ifc"
|
|
"sigs.k8s.io/kustomize/v3/pkg/resid"
|
|
"sigs.k8s.io/kustomize/v3/pkg/resmap"
|
|
"sigs.k8s.io/kustomize/v3/pkg/transformers"
|
|
"sigs.k8s.io/kustomize/v3/pkg/transformers/config"
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
// Add the given prefix and suffix to the field.
|
|
type PrefixSuffixTransformerPlugin struct {
|
|
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
|
|
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
|
|
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
|
}
|
|
|
|
//noinspection GoUnusedGlobalVariable
|
|
func NewPrefixSuffixTransformerPlugin() *PrefixSuffixTransformerPlugin {
|
|
return &PrefixSuffixTransformerPlugin{}
|
|
}
|
|
|
|
// Not placed in a file yet due to lack of demand.
|
|
var prefixSuffixFieldSpecsToSkip = []config.FieldSpec{
|
|
{
|
|
Gvk: gvk.Gvk{Kind: "CustomResourceDefinition"},
|
|
},
|
|
}
|
|
|
|
func (p *PrefixSuffixTransformerPlugin) Config(
|
|
ldr ifc.Loader, rf *resmap.Factory, c []byte) (err error) {
|
|
p.Prefix = ""
|
|
p.Suffix = ""
|
|
p.FieldSpecs = nil
|
|
err = yaml.Unmarshal(c, p)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if p.FieldSpecs == nil {
|
|
return errors.New("fieldSpecs is not expected to be nil")
|
|
}
|
|
return
|
|
}
|
|
|
|
func (p *PrefixSuffixTransformerPlugin) Transform(m resmap.ResMap) error {
|
|
if len(p.Prefix) == 0 && len(p.Suffix) == 0 {
|
|
return nil
|
|
}
|
|
for _, r := range m.Resources() {
|
|
if p.shouldSkip(r.OrgId()) {
|
|
continue
|
|
}
|
|
id := r.OrgId()
|
|
for _, path := range p.FieldSpecs {
|
|
if !id.IsSelected(&path.Gvk) {
|
|
continue
|
|
}
|
|
if smellsLikeANameChange(&path) {
|
|
r.AddNamePrefix(p.Prefix)
|
|
r.AddNameSuffix(p.Suffix)
|
|
}
|
|
err := transformers.MutateField(
|
|
r.Map(),
|
|
path.PathSlice(),
|
|
path.CreateIfNotPresent,
|
|
p.addPrefixSuffix)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func smellsLikeANameChange(fs *config.FieldSpec) bool {
|
|
return fs.Path == "metadata/name"
|
|
}
|
|
|
|
func (p *PrefixSuffixTransformerPlugin) shouldSkip(
|
|
id resid.ResId) bool {
|
|
for _, path := range prefixSuffixFieldSpecsToSkip {
|
|
if id.IsSelected(&path.Gvk) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (p *PrefixSuffixTransformerPlugin) addPrefixSuffix(
|
|
in interface{}) (interface{}, error) {
|
|
s, ok := in.(string)
|
|
if !ok {
|
|
return nil, fmt.Errorf("%#v is expected to be %T", in, s)
|
|
}
|
|
return fmt.Sprintf("%s%s%s", p.Prefix, s, p.Suffix), nil
|
|
}
|