mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
90 lines
2.4 KiB
Go
90 lines
2.4 KiB
Go
// Code generated by pluginator on PatchStrategicMergeTransformer; DO NOT EDIT.
|
|
// pluginator {unknown 1970-01-01T00:00:00Z }
|
|
|
|
package builtins
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"sigs.k8s.io/kustomize/api/resmap"
|
|
"sigs.k8s.io/kustomize/api/resource"
|
|
"sigs.k8s.io/kustomize/api/types"
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
type PatchStrategicMergeTransformerPlugin struct {
|
|
loadedPatches []*resource.Resource
|
|
Paths []types.PatchStrategicMerge `json:"paths,omitempty" yaml:"paths,omitempty"`
|
|
Patches string `json:"patches,omitempty" yaml:"patches,omitempty"`
|
|
}
|
|
|
|
func (p *PatchStrategicMergeTransformerPlugin) Config(
|
|
h *resmap.PluginHelpers, c []byte) (err error) {
|
|
err = yaml.Unmarshal(c, p)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(p.Paths) == 0 && p.Patches == "" {
|
|
return fmt.Errorf("empty file path and empty patch content")
|
|
}
|
|
if len(p.Paths) != 0 {
|
|
patches, err := loadFromPaths(h, p.Paths)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
p.loadedPatches = append(p.loadedPatches, patches...)
|
|
}
|
|
if p.Patches != "" {
|
|
patches, err := h.ResmapFactory().RF().SliceFromBytes([]byte(p.Patches))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
p.loadedPatches = append(p.loadedPatches, patches...)
|
|
}
|
|
if len(p.loadedPatches) == 0 {
|
|
return fmt.Errorf(
|
|
"patch appears to be empty; files=%v, Patch=%s", p.Paths, p.Patches)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func loadFromPaths(
|
|
h *resmap.PluginHelpers,
|
|
paths []types.PatchStrategicMerge) (
|
|
result []*resource.Resource, err error) {
|
|
var patches []*resource.Resource
|
|
for _, path := range paths {
|
|
// For legacy reasons, attempt to treat the path string as
|
|
// actual patch content.
|
|
patches, err = h.ResmapFactory().RF().SliceFromBytes([]byte(path))
|
|
if err != nil {
|
|
// Failing that, treat it as a file path.
|
|
patches, err = h.ResmapFactory().RF().SliceFromPatches(
|
|
h.Loader(), []types.PatchStrategicMerge{path})
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
result = append(result, patches...)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (p *PatchStrategicMergeTransformerPlugin) Transform(m resmap.ResMap) error {
|
|
for _, patch := range p.loadedPatches {
|
|
target, err := m.GetById(patch.OrgId())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err = m.ApplySmPatch(
|
|
resource.MakeIdSet([]*resource.Resource{target}), patch); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func NewPatchStrategicMergeTransformerPlugin() resmap.TransformerPlugin {
|
|
return &PatchStrategicMergeTransformerPlugin{}
|
|
}
|