From 09176801e169a2836cde1ab3610e57c6a2eb968b Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sat, 30 Aug 2025 12:27:29 +0200 Subject: [PATCH] feat: warn for secret generation --- cli/app/new.go | 42 +++++++++++++---------- pkg/i18n/locales/abra.pot | 59 ++++++++++++++++--------------- pkg/i18n/locales/es.po | 63 +++++++++++++++++++--------------- tests/integration/app_new.bats | 13 +++++++ 4 files changed, 103 insertions(+), 74 deletions(-) diff --git a/cli/app/new.go b/cli/app/new.go index 57a2c24b2..7166dd982 100644 --- a/cli/app/new.go +++ b/cli/app/new.go @@ -149,27 +149,27 @@ var AppNewCommand = &cobra.Command{ log.Fatal(err) } + sampleEnv, err := recipe.SampleEnv() + if err != nil { + log.Fatal(err) + } + + composeFiles, err := recipe.GetComposeFiles(sampleEnv) + if err != nil { + log.Fatal(err) + } + + secretsConfig, err := secret.ReadSecretsConfig( + recipe.SampleEnvPath, + composeFiles, + appPkg.StackName(appDomain), + ) + if err != nil { + log.Fatal(err) + } + var appSecrets AppSecrets if generateSecrets { - sampleEnv, err := recipe.SampleEnv() - if err != nil { - log.Fatal(err) - } - - composeFiles, err := recipe.GetComposeFiles(sampleEnv) - if err != nil { - log.Fatal(err) - } - - secretsConfig, err := secret.ReadSecretsConfig( - recipe.SampleEnvPath, - composeFiles, - appPkg.StackName(appDomain), - ) - if err != nil { - log.Fatal(err) - } - if err := promptForSecrets(recipe.Name, secretsConfig); err != nil { log.Fatal(err) } @@ -191,6 +191,10 @@ var AppNewCommand = &cobra.Command{ log.Info(i18n.G("%s created (version: %s)", appDomain, recipeVersion)) + if len(secretsConfig) > 0 { + log.Warn(i18n.G("%s requires secret generation before deploying, run \"abra app secret generate %s --all\"", recipe.Name, appDomain)) + } + if len(appSecrets) > 0 { rows := [][]string{} for k, v := range appSecrets { diff --git a/pkg/i18n/locales/abra.pot b/pkg/i18n/locales/abra.pot index a51dff21c..a17fb9de1 100644 --- a/pkg/i18n/locales/abra.pot +++ b/pkg/i18n/locales/abra.pot @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: \n" "Report-Msgid-Bugs-To: EMAIL\n" - "POT-Creation-Date: 2025-08-30 12:12+0200\n" + "POT-Creation-Date: 2025-08-30 12:27+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -281,7 +281,7 @@ msgstr "" msgid "%s has no published versions?" msgstr "" -#: ./cli/app/new.go:277 +#: ./cli/app/new.go:281 #, c-format msgid "%s has no secrets to generate, skipping..." msgstr "" @@ -376,6 +376,11 @@ msgstr "" msgid "%s removed from pass store" msgstr "" +#: ./cli/app/new.go:195 +#, c-format +msgid "%s requires secret generation before deploying, run \"abra app secret generate %s --all\"" +msgstr "" + #: ./cli/app/new.go:141 #, c-format msgid "%s sanitised as %s for new app" @@ -552,7 +557,7 @@ msgstr "" msgid "Both local recipe and live deployment labels are shown." msgstr "" -#: ./cli/app/backup.go:319 ./cli/app/backup.go:335 ./cli/app/check.go:95 ./cli/app/cmd.go:285 ./cli/app/cp.go:385 ./cli/app/deploy.go:339 ./cli/app/labels.go:143 ./cli/app/new.go:373 ./cli/app/ps.go:213 ./cli/app/restart.go:162 ./cli/app/restore.go:138 ./cli/app/secret.go:569 ./cli/app/secret.go:609 ./cli/app/secret.go:633 ./cli/app/secret.go:641 ./cli/catalogue/catalogue.go:318 ./cli/recipe/lint.go:137 ./cli/updater/updater.go:552 +#: ./cli/app/backup.go:319 ./cli/app/backup.go:335 ./cli/app/check.go:95 ./cli/app/cmd.go:285 ./cli/app/cp.go:385 ./cli/app/deploy.go:339 ./cli/app/labels.go:143 ./cli/app/new.go:377 ./cli/app/ps.go:213 ./cli/app/restart.go:162 ./cli/app/restore.go:138 ./cli/app/secret.go:569 ./cli/app/secret.go:609 ./cli/app/secret.go:633 ./cli/app/secret.go:641 ./cli/catalogue/catalogue.go:318 ./cli/recipe/lint.go:137 ./cli/updater/updater.go:552 msgid "C" msgstr "" @@ -694,7 +699,7 @@ msgid "Creates a new app from a default recipe.\n" "on your $PATH." msgstr "" -#: ./cli/app/deploy.go:355 ./cli/app/new.go:349 ./cli/app/rollback.go:337 ./cli/app/upgrade.go:447 +#: ./cli/app/deploy.go:355 ./cli/app/new.go:353 ./cli/app/rollback.go:337 ./cli/app/upgrade.go:447 msgid "D" msgstr "" @@ -805,7 +810,7 @@ msgid "Generate a report of all managed apps.\n" "Use \"--status/-S\" flag to query all servers for the live deployment status." msgstr "" -#: ./cli/app/new.go:283 +#: ./cli/app/new.go:287 msgid "Generate app secrets?" msgstr "" @@ -1126,11 +1131,11 @@ msgstr "" msgid "Run app commands" msgstr "" -#: ./cli/app/backup.go:303 ./cli/app/list.go:295 ./cli/app/logs.go:109 ./cli/app/new.go:365 +#: ./cli/app/backup.go:303 ./cli/app/list.go:295 ./cli/app/logs.go:109 ./cli/app/new.go:369 msgid "S" msgstr "" -#: ./cli/app/new.go:200 +#: ./cli/app/new.go:204 msgid "SECRETS OVERVIEW" msgstr "" @@ -1163,7 +1168,7 @@ msgstr "" msgid "STATUS" msgstr "" -#: ./cli/app/new.go:308 +#: ./cli/app/new.go:312 msgid "Select app server:" msgstr "" @@ -1200,7 +1205,7 @@ msgstr "" msgid "Specify a server name" msgstr "" -#: ./cli/app/new.go:259 +#: ./cli/app/new.go:263 msgid "Specify app domain" msgstr "" @@ -1718,7 +1723,7 @@ msgstr "" msgid "autocomplete failed: %s" msgstr "" -#: ./cli/app/new.go:367 +#: ./cli/app/new.go:371 msgid "automatically generate secrets" msgstr "" @@ -1898,7 +1903,7 @@ msgstr "" msgid "cfg" msgstr "" -#: ./cli/app/backup.go:318 ./cli/app/backup.go:334 ./cli/app/check.go:94 ./cli/app/cmd.go:284 ./cli/app/cp.go:384 ./cli/app/deploy.go:338 ./cli/app/labels.go:142 ./cli/app/new.go:372 ./cli/app/ps.go:212 ./cli/app/restart.go:161 ./cli/app/restore.go:137 ./cli/app/secret.go:568 ./cli/app/secret.go:608 ./cli/app/secret.go:632 ./cli/app/secret.go:640 ./cli/catalogue/catalogue.go:317 ./cli/recipe/lint.go:136 ./cli/updater/updater.go:551 +#: ./cli/app/backup.go:318 ./cli/app/backup.go:334 ./cli/app/check.go:94 ./cli/app/cmd.go:284 ./cli/app/cp.go:384 ./cli/app/deploy.go:338 ./cli/app/labels.go:142 ./cli/app/new.go:376 ./cli/app/ps.go:212 ./cli/app/restart.go:161 ./cli/app/restore.go:137 ./cli/app/secret.go:568 ./cli/app/secret.go:608 ./cli/app/secret.go:632 ./cli/app/secret.go:640 ./cli/catalogue/catalogue.go:317 ./cli/recipe/lint.go:136 ./cli/updater/updater.go:551 msgid "chaos" msgstr "" @@ -2331,11 +2336,11 @@ msgstr "" msgid "docker: is the daemon running / your user has docker permissions?" msgstr "" -#: ./cli/app/new.go:348 +#: ./cli/app/new.go:352 msgid "domain" msgstr "" -#: ./cli/app/new.go:351 +#: ./cli/app/new.go:355 msgid "domain name for app" msgstr "" @@ -2933,7 +2938,7 @@ msgstr "" msgid "id: %s, " msgstr "" -#: ./cli/app/backup.go:321 ./cli/app/backup.go:337 ./cli/app/check.go:97 ./cli/app/cmd.go:287 ./cli/app/cp.go:387 ./cli/app/deploy.go:341 ./cli/app/labels.go:145 ./cli/app/new.go:375 ./cli/app/ps.go:215 ./cli/app/restart.go:164 ./cli/app/restore.go:140 ./cli/app/secret.go:571 ./cli/app/secret.go:611 ./cli/app/secret.go:635 ./cli/app/secret.go:643 ./cli/catalogue/catalogue.go:320 ./cli/recipe/lint.go:139 ./cli/updater/updater.go:554 +#: ./cli/app/backup.go:321 ./cli/app/backup.go:337 ./cli/app/check.go:97 ./cli/app/cmd.go:287 ./cli/app/cp.go:387 ./cli/app/deploy.go:341 ./cli/app/labels.go:145 ./cli/app/new.go:379 ./cli/app/ps.go:215 ./cli/app/restart.go:164 ./cli/app/restore.go:140 ./cli/app/secret.go:571 ./cli/app/secret.go:611 ./cli/app/secret.go:635 ./cli/app/secret.go:643 ./cli/catalogue/catalogue.go:320 ./cli/recipe/lint.go:139 ./cli/updater/updater.go:554 msgid "ignore uncommitted recipes changes" msgstr "" @@ -3460,7 +3465,7 @@ msgstr "" msgid "no containers matching the %v filter found?" msgstr "" -#: ./cli/app/new.go:268 ./cli/internal/validate.go:129 +#: ./cli/app/new.go:272 ./cli/internal/validate.go:129 msgid "no domain provided" msgstr "" @@ -3518,7 +3523,7 @@ msgstr "" msgid "no secrets to remove?" msgstr "" -#: ./cli/app/new.go:317 ./cli/internal/validate.go:167 +#: ./cli/app/new.go:321 ./cli/internal/validate.go:167 msgid "no server provided" msgstr "" @@ -3648,7 +3653,7 @@ msgstr "" #. with no spaces in between #. translators: `abra server prune` aliases. use a comma separated list of #. aliases with no spaces in between -#: ./cli/app/backup.go:295 ./cli/app/new.go:357 ./cli/app/ps.go:29 ./cli/app/secret.go:561 ./cli/app/secret.go:585 ./cli/app/secret.go:625 ./cli/app/undeploy.go:160 ./cli/catalogue/catalogue.go:294 ./cli/recipe/list.go:112 ./cli/recipe/release.go:672 ./cli/server/prune.go:18 +#: ./cli/app/backup.go:295 ./cli/app/new.go:361 ./cli/app/ps.go:29 ./cli/app/secret.go:561 ./cli/app/secret.go:585 ./cli/app/secret.go:625 ./cli/app/undeploy.go:160 ./cli/catalogue/catalogue.go:294 ./cli/recipe/list.go:112 ./cli/recipe/release.go:672 ./cli/server/prune.go:18 msgid "p" msgstr "" @@ -3687,7 +3692,7 @@ msgstr "" msgid "parsing recipe version failed: %s" msgstr "" -#: ./cli/app/new.go:356 ./cli/app/secret.go:560 ./cli/app/secret.go:584 ./cli/app/secret.go:624 +#: ./cli/app/new.go:360 ./cli/app/secret.go:560 ./cli/app/secret.go:584 ./cli/app/secret.go:624 msgid "pass" msgstr "" @@ -4241,7 +4246,7 @@ msgstr "" #. aliases with no spaces in between #. translators: `abra server` aliases. use a comma separated list of aliases #. with no spaces in between -#: ./cli/app/backup.go:198 ./cli/app/backup.go:263 ./cli/app/backup.go:287 ./cli/app/list.go:326 ./cli/app/logs.go:101 ./cli/app/new.go:334 ./cli/app/restore.go:114 ./cli/app/secret.go:535 ./cli/catalogue/catalogue.go:27 ./cli/catalogue/catalogue.go:310 ./cli/recipe/fetch.go:130 ./cli/recipe/sync.go:24 ./cli/server/server.go:12 +#: ./cli/app/backup.go:198 ./cli/app/backup.go:263 ./cli/app/backup.go:287 ./cli/app/list.go:326 ./cli/app/logs.go:101 ./cli/app/new.go:338 ./cli/app/restore.go:114 ./cli/app/secret.go:535 ./cli/catalogue/catalogue.go:27 ./cli/catalogue/catalogue.go:310 ./cli/recipe/fetch.go:130 ./cli/recipe/sync.go:24 ./cli/server/server.go:12 msgid "s" msgstr "" @@ -4288,17 +4293,17 @@ msgstr "" msgid "secret: %s removed" msgstr "" -#: ./cli/app/backup.go:302 ./cli/app/new.go:364 +#: ./cli/app/backup.go:302 ./cli/app/new.go:368 msgid "secrets" msgstr "" -#: ./cli/app/new.go:204 +#: ./cli/app/new.go:208 #, c-format msgid "secrets are %s shown again, please save them %s" msgstr "" #. translators: `abra server` command for autocompletion -#: ./cli/app/list.go:325 ./cli/app/list.go:332 ./cli/app/new.go:333 ./cli/app/new.go:340 ./cli/run.go:78 +#: ./cli/app/list.go:325 ./cli/app/list.go:332 ./cli/app/new.go:337 ./cli/app/new.go:344 ./cli/run.go:78 msgid "server" msgstr "" @@ -4422,7 +4427,7 @@ msgstr "" msgid "since" msgstr "" -#: ./cli/app/new.go:302 +#: ./cli/app/new.go:306 #, c-format msgid "single server detected, choosing %s automatically" msgstr "" @@ -4497,7 +4502,7 @@ msgstr "" msgid "specify secret value" msgstr "" -#: ./cli/app/new.go:336 +#: ./cli/app/new.go:340 msgid "specify server for new app" msgstr "" @@ -4555,7 +4560,7 @@ msgstr "" msgid "store generated secrets in a local pass store" msgstr "" -#: ./cli/app/new.go:359 +#: ./cli/app/new.go:363 msgid "store secrets in a local pass store" msgstr "" @@ -4710,7 +4715,7 @@ msgstr "" msgid "trim input" msgstr "" -#: ./cli/app/new.go:229 ./pkg/app/app.go:141 +#: ./cli/app/new.go:233 ./pkg/app/app.go:141 #, c-format msgid "trimming %s to %s to avoid runtime limits" msgstr "" @@ -5316,7 +5321,7 @@ msgstr "" msgid "writer: %v, " msgstr "" -#: ./cli/app/deploy.go:240 ./cli/app/new.go:217 ./cli/app/rollback.go:232 ./cli/app/undeploy.go:111 ./cli/app/upgrade.go:278 +#: ./cli/app/deploy.go:240 ./cli/app/new.go:221 ./cli/app/rollback.go:232 ./cli/app/undeploy.go:111 ./cli/app/upgrade.go:278 #, c-format msgid "writing recipe version failed: %s" msgstr "" diff --git a/pkg/i18n/locales/es.po b/pkg/i18n/locales/es.po index a73e4f766..cfbaf835c 100644 --- a/pkg/i18n/locales/es.po +++ b/pkg/i18n/locales/es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: EMAIL\n" -"POT-Creation-Date: 2025-08-30 12:12+0200\n" +"POT-Creation-Date: 2025-08-30 12:27+0200\n" "PO-Revision-Date: 2025-08-29 21:45+0000\n" "Last-Translator: chasqui \n" "Language-Team: Spanish