Rewrite: rewrites env config repo and commits application cue files

We can build upon this tool to implement version to version migration logic.

Change-Id: I6066f565f118ca44ca3ce7a0ac7522258958cf25
diff --git a/core/installer/app_test.go b/core/installer/app_test.go
index 0d7bd6a..7695796 100644
--- a/core/installer/app_test.go
+++ b/core/installer/app_test.go
@@ -105,7 +105,9 @@
 		PublicIP:        []net.IP{net.ParseIP("1.2.3.4")},
 		NamespacePrefix: "id-",
 	}
-	values := map[string]any{}
+	values := map[string]any{
+		"authGroups": "foo,bar",
+	}
 	rendered, err := a.Render(release, env, values)
 	if err != nil {
 		t.Fatal(err)
@@ -255,3 +257,47 @@
 		t.Log(string(r))
 	}
 }
+
+func TestAppPackages(t *testing.T) {
+	contents, err := valuesTmpls.ReadFile("values-tmpl/rpuppy.cue")
+	if err != nil {
+		t.Fatal(err)
+	}
+	app, err := NewCueEnvApp(CueAppData{
+		"base.cue": []byte(cueBaseConfig),
+		"app.cue":  []byte(contents),
+	})
+	if err != nil {
+		t.Fatal(err)
+	}
+	release := Release{
+		Namespace: "foo",
+	}
+	env := AppEnvConfig{
+		InfraName:       "dodo",
+		Id:              "id",
+		ContactEmail:    "foo@bar.ge",
+		Domain:          "bar.ge",
+		PrivateDomain:   "p.bar.ge",
+		PublicIP:        []net.IP{net.ParseIP("1.2.3.4")},
+		NamespacePrefix: "id-",
+	}
+	values := map[string]any{
+		"network":   "Public",
+		"subdomain": "woof",
+		"auth": map[string]any{
+			"enabled": true,
+			"groups":  "a,b",
+		},
+	}
+	rendered, err := app.Render(release, env, values)
+	if err != nil {
+		t.Fatal(err)
+	}
+	for _, r := range rendered.Resources {
+		t.Log(string(r))
+	}
+	for _, r := range rendered.Data {
+		t.Log(string(r))
+	}
+}