blob: d21c71dd5255d3dc7f6446b1e9f6d5bf8fc38950 [file] [log] [blame]
package io
import (
"bytes"
"golang.org/x/exp/slices"
"io"
"sigs.k8s.io/yaml"
)
type Kustomization struct {
ApiVersion string `json:"apiVersion,omitempty"`
Kind string `json:"kind,omitempty"`
Resources []string `json:"resources,omitempty"`
}
func NewKustomization() Kustomization {
return Kustomization{
ApiVersion: "kustomize.config.k8s.io/v1beta1",
Kind: "Kustomization",
Resources: []string{},
}
}
func (k Kustomization) Write(w io.Writer) error {
contents, err := yaml.Marshal(k)
if err != nil {
return err
}
if _, err := io.Copy(w, bytes.NewReader(contents)); err != nil {
return err
}
return nil
}
func (k *Kustomization) AddResources(names ...string) {
for _, name := range names {
if !slices.Contains(k.Resources, name) {
k.Resources = append(k.Resources, name)
}
}
}
func (k *Kustomization) RemoveResources(names ...string) {
for _, name := range names {
for i, r := range k.Resources {
if r == name {
k.Resources = slices.Delete(k.Resources, i, i+1)
break
}
}
}
}