blob: 93f806a6f9df19ec54794efe81318dd0edc0b5fa [file] [log] [blame]
Giorgi Lekveishvili23ef7f82023-05-26 11:57:48 +04001package installer
2
3import (
4 "bytes"
Giorgi Lekveishvili0ccd1482023-06-21 15:02:24 +04005 "golang.org/x/exp/slices"
Giorgi Lekveishvili23ef7f82023-05-26 11:57:48 +04006 "io"
7 "io/ioutil"
8
9 "sigs.k8s.io/yaml"
10)
11
12type Kustomization struct {
13 ApiVersion string `json:"apiVersion,omitempty"`
14 Kind string `json:"kind,omitempty"`
15 Resources []string `json:"resources,omitempty"`
16}
17
18func NewKustomization() Kustomization {
19 return Kustomization{
20 ApiVersion: "kustomize.config.k8s.io/v1beta1",
21 Kind: "Kustomization",
22 Resources: []string{},
23 }
24}
25
26func ReadKustomization(r io.Reader) (*Kustomization, error) {
27 contents, err := ioutil.ReadAll(r)
28 if err != nil {
29 return nil, err
30 }
31 var ret Kustomization
32 if err = yaml.UnmarshalStrict(contents, &ret); err != nil {
33 return nil, err
34 }
35 return &ret, nil
36}
37
38func (k Kustomization) Write(w io.Writer) error {
39 contents, err := yaml.Marshal(k)
40 if err != nil {
41 return err
42 }
43 if _, err := io.Copy(w, bytes.NewReader(contents)); err != nil {
44 return err
45 }
46 return nil
47}
Giorgi Lekveishvili3550b432023-06-09 19:37:51 +040048
49func (k *Kustomization) AddResources(names ...string) {
Giorgi Lekveishvili0ccd1482023-06-21 15:02:24 +040050 for _, name := range names {
51 if !slices.Contains(k.Resources, name) {
52 k.Resources = append(k.Resources, name)
53 }
54 }
Giorgi Lekveishvili3550b432023-06-09 19:37:51 +040055}