From 95c598d03016b444b6995cb01e58632d8adaacbc Mon Sep 17 00:00:00 2001 From: decentral1se Date: Wed, 17 Jul 2024 01:45:19 +0200 Subject: [PATCH] feat: "app new" supports writing env files And, automagically, chaos commit hashes. --- cli/app/new.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/cli/app/new.go b/cli/app/new.go index be77f168..bc2614c9 100644 --- a/cli/app/new.go +++ b/cli/app/new.go @@ -4,6 +4,7 @@ import ( "fmt" "coopcloud.tech/abra/cli/internal" + "coopcloud.tech/abra/pkg/app" appPkg "coopcloud.tech/abra/pkg/app" "coopcloud.tech/abra/pkg/autocomplete" "coopcloud.tech/abra/pkg/client" @@ -28,6 +29,8 @@ deploy " to do so. You can see what recipes are available (i.e. values for the argument) by running "abra recipe ls". +Recipe commit hashes are supported values for "[]". + Passing the "--secrets/-S" flag will automatically generate secrets for your app and store them encrypted at rest on the chosen target server. These generated secrets are only visible at generation time, so please take care to @@ -66,6 +69,7 @@ var appNewCommand = cli.Command{ Action: func(c *cli.Context) error { recipe := internal.ValidateRecipe(c) + var version string if !internal.Chaos { if err := recipe.EnsureIsClean(); err != nil { log.Fatal(err) @@ -75,16 +79,13 @@ var appNewCommand = cli.Command{ log.Fatal(err) } } - if c.Args().Get(1) == "" { - var version string + if c.Args().Get(1) == "" { recipeVersions, err := recipe.GetRecipeVersions() if err != nil { log.Fatal(err) } - // NOTE(d1): determine whether recipe versions exist or not and check - // out the latest version or current HEAD if len(recipeVersions) > 0 { latest := recipeVersions[len(recipeVersions)-1] for tag := range latest { @@ -100,7 +101,8 @@ var appNewCommand = cli.Command{ } } } else { - if _, err := recipe.EnsureVersion(c.Args().Get(1)); err != nil { + version = c.Args().Get(1) + if _, err := recipe.EnsureVersion(version); err != nil { log.Fatal(err) } } @@ -180,10 +182,10 @@ var appNewCommand = cli.Command{ log.Fatal(err) } - headers := []string{"SERVER", "RECIPE", "DOMAIN"} + headers := []string{"SERVER", "DOMAIN", "RECIPE", "VERSION"} table.Headers(headers...) - table.Row(internal.NewAppServer, recipe.Name, internal.Domain) + table.Row(internal.NewAppServer, internal.Domain, recipe.Name, version) log.Infof("new app '%s' created 🌞", recipe.Name) @@ -211,6 +213,16 @@ var appNewCommand = cli.Command{ ) } + app, err := app.Get(internal.Domain) + if err != nil { + log.Fatal(err) + } + + log.Debugf("choosing %s as version to save to env file", version) + if err := app.WriteRecipeVersion(version); err != nil { + log.Fatalf("writing new recipe version in env file: %s", err) + } + return nil }, }