Files
kustomize/kyaml/setters2/setterdefinition.go
2020-02-11 10:45:39 -08:00

57 lines
1.2 KiB
Go

// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package setters2
import (
"io/ioutil"
"sigs.k8s.io/kustomize/kyaml/yaml"
)
const DefinitionPrefix = "io.k8s.cli.setters."
type SetterDefinition struct {
Name string
Value string
}
func (sd SetterDefinition) AddSetterToFile(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(sd); err != nil {
return err
}
out, err := y.String()
if err != nil {
return err
}
if err := ioutil.WriteFile(path, []byte(out), 0600); err != nil {
return err
}
return nil
}
func (sd SetterDefinition) Filter(object *yaml.RNode) (*yaml.RNode, error) {
key := DefinitionPrefix + sd.Name
def, err := object.Pipe(yaml.LookupCreate(
yaml.MappingNode, "openAPI", "definitions", key, "x-k8s-cli", "setter"))
if err != nil {
return nil, err
}
if err := def.PipeE(yaml.FieldSetter{Name: "name", StringValue: sd.Name}); err != nil {
return nil, err
}
if err := def.PipeE(yaml.FieldSetter{Name: "value", StringValue: sd.Value}); err != nil {
return nil, err
}
return object, nil
}