mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-09-19 05:35:57 +00:00
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package setters2
|
|
|
|
import (
|
|
"io/ioutil"
|
|
|
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
|
)
|
|
|
|
type SubstitutionDefinition struct {
|
|
Name string `yaml:"name"`
|
|
Pattern string `yaml:"pattern"`
|
|
Values []Value `yaml:"value"`
|
|
}
|
|
|
|
type Value struct {
|
|
Marker string `yaml:"marker"`
|
|
Ref string `yaml:"ref"`
|
|
}
|
|
|
|
func (subd SubstitutionDefinition) AddSubstitutionToFile(path string) error {
|
|
b, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
y, err := yaml.Parse(string(b))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := y.PipeE(subd); err != nil {
|
|
return err
|
|
}
|
|
out, err := y.String()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := ioutil.WriteFile(path, []byte(out), 0666); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (subd SubstitutionDefinition) Filter(object *yaml.RNode) (*yaml.RNode, error) {
|
|
key := DefinitionPrefix + subd.Name
|
|
|
|
def, err := object.Pipe(yaml.LookupCreate(
|
|
yaml.MappingNode, "openAPI", "definitions", key, "x-k8s-cli", "substitution"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err := def.PipeE(yaml.FieldSetter{Name: "name", StringValue: subd.Name}); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := def.PipeE(yaml.FieldSetter{Name: "pattern", StringValue: subd.Pattern}); err != nil {
|
|
return nil, err
|
|
}
|
|
return object, nil
|
|
}
|