env-manager: ui polish (#127)
* env-manager: migrate to pico 2.0.6
* env: option to hide children from ui
* introduce template hierarchy
* style: improve menu styling
* env: reorganize tasks, pull before install
---------
Co-authored-by: Giorgi Lekveishvili <lekva@gl-mbp-m1-max.local>
diff --git a/core/installer/tasks/init.go b/core/installer/tasks/init.go
index f898a1f..e6dd47e 100644
--- a/core/installer/tasks/init.go
+++ b/core/installer/tasks/init.go
@@ -11,10 +11,23 @@
func SetupConfigRepoTask(env Env, st *state) Task {
return newSequentialParentTask(
- "Configuration repository",
- NewCreateConfigRepoTask(env, st),
- CreateGitClientTask(env, st),
+ "Configure Git repository for new environment",
+ true,
+ newSequentialParentTask(
+ "Start up Git server",
+ false,
+ NewCreateConfigRepoTask(env, st),
+ CreateGitClientTask(env, st),
+ ),
NewInitConfigRepoTask(env, st),
+ NewActivateEnvTask(env, st),
+ newSequentialParentTask(
+ "Create initial commit",
+ false,
+ CreateRepoClient(env, st),
+ CommitEnvironmentConfiguration(env, st),
+ ConfigureFirstAccount(env, st),
+ ),
)
}
@@ -85,7 +98,7 @@
}
func NewInitConfigRepoTask(env Env, st *state) Task {
- t := newLeafTask("Create Git repository for environment configuration", func() error {
+ t := newLeafTask("Configure access control lists", func() error {
st.fluxUserName = fmt.Sprintf("flux-%s", env.Name)
keys, err := installer.NewSSHKeyPair(st.fluxUserName)
if err != nil {
@@ -100,7 +113,23 @@
return err
}
repoIO := installer.NewRepoIO(repo, st.ssClient.Signer)
- if err := repoIO.WriteCommitAndPush("README.md", fmt.Sprintf("# %s PCloud environment", env.Name), "readme"); err != nil {
+ if err := func() error {
+ w, err := repoIO.Writer("README.md")
+ if err != nil {
+ return err
+ }
+ defer w.Close()
+ if _, err := fmt.Fprintf(w, "# %s PCloud environment", env.Name); err != nil {
+ return err
+ }
+ return nil
+ }(); err != nil {
+ return err
+ }
+ if err := repoIO.WriteKustomization("kustomization.yaml", installer.NewKustomization()); err != nil {
+ return err
+ }
+ if err := repoIO.CommitAndPush("init"); err != nil {
return err
}
if err := st.ssClient.AddUser(st.fluxUserName, keys.AuthorizedKey()); err != nil {