installer: env and app manager
diff --git a/core/installer/kustomization.go b/core/installer/kustomization.go
new file mode 100644
index 0000000..8b96668
--- /dev/null
+++ b/core/installer/kustomization.go
@@ -0,0 +1,46 @@
+package installer
+
+import (
+ "bytes"
+ "io"
+ "io/ioutil"
+
+ "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 ReadKustomization(r io.Reader) (*Kustomization, error) {
+ contents, err := ioutil.ReadAll(r)
+ if err != nil {
+ return nil, err
+ }
+ var ret Kustomization
+ if err = yaml.UnmarshalStrict(contents, &ret); err != nil {
+ return nil, err
+ }
+ return &ret, nil
+}
+
+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
+}