0
0
forked from toolshed/abra

Compare commits

..

1 Commits

Author SHA1 Message Date
9daac54144 fix(move): does not error when secret already exists on new server 2025-10-31 19:26:50 +01:00
17 changed files with 483 additions and 1085 deletions

View File

@ -152,6 +152,7 @@ checkout as-is. Recipe commit hashes are also supported as values for
log.Fatal(err)
}
appPkg.ExposeAllEnv(stackName, compose, app.Env)
appPkg.SetRecipeLabel(compose, stackName, app.Recipe.Name)
appPkg.SetChaosLabel(compose, stackName, internal.Chaos)
if internal.Chaos {
@ -170,9 +171,6 @@ checkout as-is. Recipe commit hashes are also supported as values for
}
appPkg.SetVersionLabel(compose, stackName, versionLabel)
newRecipeWithDeployVersion := fmt.Sprintf("%s:%s", app.Recipe.Name, toDeployVersion)
appPkg.ExposeAllEnv(stackName, compose, app.Env, newRecipeWithDeployVersion)
envVars, err := appPkg.CheckEnv(app)
if err != nil {
log.Fatal(err)

View File

@ -1,50 +1,28 @@
package app
import (
"context"
"fmt"
"os"
"path"
"path/filepath"
"regexp"
"sort"
"strings"
"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"
"coopcloud.tech/abra/pkg/config"
containerPkg "coopcloud.tech/abra/pkg/container"
contextPkg "coopcloud.tech/abra/pkg/context"
"coopcloud.tech/abra/pkg/formatter"
"coopcloud.tech/abra/pkg/i18n"
"coopcloud.tech/abra/pkg/log"
"coopcloud.tech/abra/pkg/upstream/stack"
"github.com/docker/docker/api/types/filters"
"github.com/spf13/cobra"
)
// translators: `abra app env` aliases. use a comma separated list of aliases
// with no spaces in between
// translators: `abra app env` aliases. use a comma separated list of aliases with
// no spaces in between
var appEnvAliases = i18n.G("e")
// translators: `abra app env list` aliases. use a comma separated list of
// aliases with no spaces in between
var appEnvListAliases = i18n.G("l,ls")
// translators: `abra app env pull` aliases. use a comma separated list of
// aliases with no spaces in between
var appEnvPullAliases = i18n.G("pl,p")
var AppEnvListCommand = &cobra.Command{
// translators: `app env list` command
Use: i18n.G("list <domain> [flags]"),
Aliases: strings.Split(appEnvListAliases, ","),
// translators: Short description for `app env list` command
Short: i18n.G("List all app environment values"),
Example: i18n.G(" abra app env list 1312.net"),
var AppEnvCommand = &cobra.Command{
// translators: `app env` command
Use: i18n.G("env <domain> [flags]"),
Aliases: strings.Split(appEnvAliases, ","),
// translators: Short description for `app env` command
Short: i18n.G("Show app .env values"),
Example: i18n.G(" abra app env 1312.net"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
@ -71,274 +49,3 @@ var AppEnvListCommand = &cobra.Command{
fmt.Println(overview)
},
}
var AppEnvPullCommand = &cobra.Command{
// translators: `app pull` command
Use: i18n.G("pull <domain> [flags]"),
Aliases: strings.Split(appEnvPullAliases, ","),
// translators: Short description for `app env pull` command
Short: i18n.G("Pull app environment values from a deployed app"),
Long: i18n.G(`Pull app environment values from a deploymed app.
A convenient command for when you've lost your app environment file or want to
synchronize your local app environment values with what is deployed live.`),
Example: i18n.G(` # pull existing .env file and overwrite local values
abra app env pull 1312.net --force
# pull lost app .env file
abra app env pull my.gitea.net --server 1312.net`),
Args: cobra.MaximumNArgs(2),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
toComplete string) ([]string, cobra.ShellCompDirective) {
return autocomplete.AppNameComplete()
},
Run: func(cmd *cobra.Command, args []string) {
appName := args[0]
appEnvPath := path.Join(config.ABRA_DIR, "servers", server, fmt.Sprintf("%s.env", appName))
if _, err := os.Stat(appEnvPath); !os.IsNotExist(err) {
log.Fatal(i18n.G("%s already exists?", appEnvPath))
}
if server == "" {
log.Fatal(i18n.G("unable to determine server of app %s, please pass --server/-s", appName))
}
serverDir := filepath.Join(config.SERVERS_DIR, server)
if _, err := os.Stat(serverDir); os.IsNotExist(err) {
log.Fatal(i18n.G("unknown server %s, run \"abra server add %s\"?", server, server))
}
store := contextPkg.NewDefaultDockerContextStore()
contexts, err := store.Store.List()
if err != nil {
log.Fatal(i18n.G("unable to look up server context for %s: %s", server, err))
}
var contextCreated bool
if server == "default" {
contextCreated = true
}
for _, context := range contexts {
if context.Name == server {
contextCreated = true
}
}
if !contextCreated {
log.Fatal(i18n.G("%s missing context, run \"abra server add %s\"?", server, server))
}
cl, err := client.New(server)
if err != nil {
log.Fatal(err)
}
deployMeta, err := stack.IsDeployed(context.Background(), cl, appPkg.StackName(appName))
if err != nil {
log.Fatal(err)
}
if !deployMeta.IsDeployed {
log.Fatal(i18n.G("%s is not deployed?", appName))
}
filters := filters.NewArgs()
filters.Add("name", fmt.Sprintf("^%s_%s", app.StackName(appName), "app"))
targetContainer, err := containerPkg.GetContainer(context.Background(), cl, filters, internal.NoInput)
if err != nil {
log.Fatal(i18n.G("unable to retrieve container for %s: %s", appName, err))
}
inspectResult, err := cl.ContainerInspect(context.Background(), targetContainer.ID)
if err != nil {
log.Fatal(i18n.G("unable to inspect container for %s: %s", appName, err))
}
deploymentEnv := make(map[string]string)
for _, envVar := range inspectResult.Config.Env {
split := strings.SplitN(envVar, "=", 2)
if len(split) != 2 {
log.Debug(i18n.G("no value attached to %s", envVar))
continue
}
key, val := split[0], split[1]
deploymentEnv[key] = val
}
log.Debug(i18n.G("pulled env values from %s deployment: %s", appName, deploymentEnv))
var (
recipeEnvVar string
recipeKey string
)
if r, ok := deploymentEnv["TYPE"]; ok {
recipeKey = "TYPE"
recipeEnvVar = r
}
if r, ok := deploymentEnv["RECIPE"]; ok {
recipeKey = "RECIPE"
recipeEnvVar = r
}
if recipeEnvVar == "" {
log.Fatal(i18n.G("unable to determine recipe type from %s, env: %v", appName, inspectResult.Config.Env))
}
var recipeName = recipeEnvVar
if strings.Contains(recipeEnvVar, ":") {
split := strings.Split(recipeEnvVar, ":")
recipeName = split[0]
}
recipe := internal.ValidateRecipe(
[]string{recipeName},
cmd.Name(),
)
version := deployMeta.Version
if deployMeta.IsChaos {
version = deployMeta.ChaosVersion
}
if _, err := recipe.EnsureVersion(version); err != nil {
log.Fatal(err)
}
mergedEnv, err := recipe.SampleEnv()
if err != nil {
log.Fatal(err)
}
log.Debug(i18n.G("retrieved env values from .env.sample of %s: %s", recipe.Name, mergedEnv))
for k, v := range deploymentEnv {
mergedEnv[k] = v
}
if !strings.Contains(recipeEnvVar, ":") {
mergedEnv[recipeKey] = fmt.Sprintf("%s:%s", mergedEnv[recipeKey], version)
}
log.Debug(i18n.G("final merged env values for %s are: %s", appName, mergedEnv))
envSample, err := os.ReadFile(recipe.SampleEnvPath)
if err != nil {
log.Fatal(err)
}
err = os.WriteFile(appEnvPath, envSample, 0o664)
if err != nil {
log.Fatal(i18n.G("unable to write new env %s: %s", appEnvPath, err))
}
read, err := os.ReadFile(appEnvPath)
if err != nil {
log.Fatal(i18n.G("unable to read new env %s: %s", appEnvPath, err))
}
sampleEnv, err := recipe.SampleEnv()
if err != nil {
log.Fatal(err)
}
var composeFileUpdated bool
newContents := string(read)
for key, val := range mergedEnv {
if sampleEnv[key] == val {
continue
}
if key == "COMPOSE_FILE" {
composeFileUpdated = true
continue
}
if m, _ := regexp.MatchString(fmt.Sprintf(`#%s=`, key), newContents); m {
log.Debug(i18n.G("uncommenting %s", key))
re := regexp.MustCompile(fmt.Sprintf(`#%s=`, key))
newContents = re.ReplaceAllString(newContents, fmt.Sprintf("%s=", key))
}
if m, _ := regexp.MatchString(fmt.Sprintf(`# %s=`, key), newContents); m {
log.Debug(i18n.G("uncommenting %s", key))
re := regexp.MustCompile(fmt.Sprintf(`# %s=`, key))
newContents = re.ReplaceAllString(newContents, fmt.Sprintf("%s=", key))
}
if m, _ := regexp.MatchString(fmt.Sprintf(`%s=".*"`, key), newContents); m {
log.Debug(i18n.G(`inserting %s="%s" (double quotes)`, key, val))
re := regexp.MustCompile(fmt.Sprintf(`%s=".*"`, key))
newContents = re.ReplaceAllString(newContents, fmt.Sprintf(`%s="%s"`, key, val))
continue
}
if m, _ := regexp.MatchString(fmt.Sprintf(`%s='.*'`, key), newContents); m {
log.Debug(i18n.G(`inserting %s='%s' (single quotes)`, key, val))
re := regexp.MustCompile(fmt.Sprintf(`%s='.*'`, key))
newContents = re.ReplaceAllString(newContents, fmt.Sprintf(`%s='%s'`, key, val))
continue
}
if m, _ := regexp.MatchString(fmt.Sprintf("%s=.*", key), newContents); m {
log.Debug(i18n.G("inserting %s=%s (no quotes)", key, val))
re := regexp.MustCompile(fmt.Sprintf("%s=.*", key))
newContents = re.ReplaceAllString(newContents, fmt.Sprintf("%s=%s", key, val))
}
}
err = os.WriteFile(appEnvPath, []byte(newContents), 0)
if err != nil {
log.Fatal(i18n.G("unable to write new env %s: %s", appEnvPath, err))
}
log.Info(i18n.G("%s successfully created", appEnvPath))
if composeFileUpdated {
log.Warn(i18n.G("manual update required: COMPOSE_FILE=\"%s\"", mergedEnv["COMPOSE_FILE"]))
}
},
}
var AppEnvCommand = &cobra.Command{
// translators: `app env` command group
Use: i18n.G("env [cmd] [args] [flags]"),
Aliases: strings.Split(appEnvAliases, ","),
// translators: Short description for `app env` command group
Short: i18n.G("Manage app environment values"),
}
var (
server string
)
func init() {
AppEnvPullCommand.Flags().BoolVarP(
&internal.Force,
i18n.G("force"),
i18n.G("f"),
false,
i18n.G("perform action without further prompt"),
)
AppEnvPullCommand.Flags().StringVarP(
&server,
i18n.G("server"),
i18n.G("s"),
"",
i18n.G("server associated with deployed app"),
)
AppEnvPullCommand.RegisterFlagCompletionFunc(
i18n.G("server"),
func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return autocomplete.ServerNameComplete()
},
)
}

View File

@ -2,7 +2,6 @@ package app
import (
"errors"
"fmt"
"strings"
appPkg "coopcloud.tech/abra/pkg/app"
@ -178,9 +177,7 @@ beforehand. See "abra app backup" for more.`),
log.Fatal(err)
}
newRecipeWithDowngradeVersion := fmt.Sprintf("%s:%s", app.Recipe.Name, chosenDowngrade)
appPkg.ExposeAllEnv(stackName, compose, app.Env, newRecipeWithDowngradeVersion)
appPkg.ExposeAllEnv(stackName, compose, app.Env)
appPkg.SetRecipeLabel(compose, stackName, app.Recipe.Name)
appPkg.SetChaosLabel(compose, stackName, internal.Chaos)
if internal.Chaos {

View File

@ -28,7 +28,6 @@ var AppUndeployCommand = &cobra.Command{
Use: i18n.G("undeploy <domain> [flags]"),
// translators: Short description for `app undeploy` command
Aliases: strings.Split(appUndeployAliases, ","),
Short: i18n.G("Undeploy a deployed app"),
Long: i18n.G(`This does not destroy any application data.
However, you should remain vigilant, as your swarm installation will consider

View File

@ -190,9 +190,7 @@ beforehand. See "abra app backup" for more.`),
log.Fatal(err)
}
newRecipeWithUpgradeVersion := fmt.Sprintf("%s:%s", app.Recipe.Name, chosenUpgrade)
appPkg.ExposeAllEnv(stackName, compose, app.Env, newRecipeWithUpgradeVersion)
appPkg.ExposeAllEnv(stackName, compose, app.Env)
appPkg.SetRecipeLabel(compose, stackName, app.Recipe.Name)
appPkg.SetChaosLabel(compose, stackName, internal.Chaos)
if internal.Chaos {

View File

@ -283,11 +283,6 @@ Config:
app.AppBackupSnapshotsCommand,
)
app.AppEnvCommand.AddCommand(
app.AppEnvListCommand,
app.AppEnvPullCommand,
)
app.AppCommand.AddCommand(
app.AppBackupCommand,
app.AppCheckCommand,

View File

@ -502,11 +502,7 @@ func GetAppComposeConfig(recipe string, opts stack.Deploy, appEnv envfile.AppEnv
}
// ExposeAllEnv exposes all env variables to the app container
func ExposeAllEnv(
stackName string,
compose *composetypes.Config,
appEnv envfile.AppEnv,
toDeployVersion string) {
func ExposeAllEnv(stackName string, compose *composetypes.Config, appEnv envfile.AppEnv) {
for _, service := range compose.Services {
if service.Name == "app" {
log.Debug(i18n.G("adding env vars to %s service config", stackName))
@ -514,11 +510,6 @@ func ExposeAllEnv(
_, exists := service.Environment[k]
if !exists {
value := v
if k == "TYPE" || k == "RECIPE" {
// NOTE(d1): don't use the wrong version from the app env
// since we are deploying a new version
value = toDeployVersion
}
service.Environment[k] = &value
log.Debug(i18n.G("%s: %s: %s", stackName, k, value))
}

View File

@ -44,21 +44,11 @@ func New(serverName string, opts ...Opt) (*client.Client, error) {
ctx, err := GetContext(serverName)
if err != nil {
serverDir := path.Join(config.SERVERS_DIR, serverName)
if _, err := os.Stat(serverDir); err != nil {
return nil, errors.New(i18n.G("server missing, run \"abra server add %s\"?", serverName))
}
// When the docker context does not exist but the server folder is
// there, let's create a new docker context.
err = CreateContext(serverName)
if err != nil {
return nil, errors.New(i18n.G("server missing context, context creation failed: %s", err))
}
ctx, err = GetContext(serverName)
if err != nil {
if _, err := os.Stat(serverDir); err == nil {
return nil, errors.New(i18n.G("server missing context, run \"abra server add %s\"?", serverName))
}
return nil, errors.New(i18n.G("unknown server, run \"abra server add %s\"?", serverName))
}
ctxEndpoint, err := contextPkg.GetContextEndpoint(ctx)

View File

@ -7,13 +7,13 @@
msgid ""
msgstr "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: EMAIL\n"
"POT-Creation-Date: 2025-11-02 11:41+0100\n"
"POT-Creation-Date: 2025-10-31 19:25+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: ./cli/app/cp.go:38
@ -92,14 +92,6 @@ msgid " # pass <cmd> args/flags without \"--\"\n"
" abra app cmd 1312.net my_cmd --local"
msgstr ""
#: ./cli/app/env.go:85
msgid " # pull existing .env file and overwrite local values\n"
" abra app env pull 1312.net --force\n"
"\n"
" # pull lost app .env file\n"
" abra app env pull my.gitea.net --server 1312.net"
msgstr ""
#: ./cli/app/restart.go:36
msgid " # restart a single app service\n"
" abra app restart 1312.net app\n"
@ -133,8 +125,8 @@ msgid " # standard deployment\n"
" abra app deploy 1312.net 886db76d"
msgstr ""
#: ./cli/app/env.go:47
msgid " abra app env list 1312.net"
#: ./cli/app/env.go:25
msgid " abra app env 1312.net"
msgstr ""
#: ./cli/app/remove.go:45
@ -157,7 +149,7 @@ msgstr ""
msgid " abra upgrade --rc"
msgstr ""
#: ./cli/app/rollback.go:49
#: ./cli/app/rollback.go:48
msgid " # standard rollback\n"
" abra app rollback 1312.net\n"
"\n"
@ -209,7 +201,7 @@ msgstr ""
msgid "%s already exists"
msgstr ""
#: ./cli/app/env.go:102 ./pkg/app/app.go:380
#: ./pkg/app/app.go:380
#, c-format
msgid "%s already exists?"
msgstr ""
@ -339,17 +331,17 @@ msgstr ""
msgid "%s is missing the TYPE env var?"
msgstr ""
#: ./cli/app/rollback.go:308 ./cli/app/rollback.go:312
#: ./cli/app/rollback.go:305 ./cli/app/rollback.go:309
#, c-format
msgid "%s is not a downgrade for %s?"
msgstr ""
#: ./cli/app/upgrade.go:428 ./cli/app/upgrade.go:432
#: ./cli/app/upgrade.go:426 ./cli/app/upgrade.go:430
#, c-format
msgid "%s is not an upgrade for %s?"
msgstr ""
#: ./cli/app/env.go:146 ./cli/app/logs.go:65 ./cli/app/ps.go:62 ./cli/app/restart.go:100 ./cli/app/services.go:55 ./cli/app/undeploy.go:66 ./cli/app/upgrade.go:449
#: ./cli/app/logs.go:65 ./cli/app/ps.go:62 ./cli/app/restart.go:100 ./cli/app/services.go:55 ./cli/app/undeploy.go:65 ./cli/app/upgrade.go:447
#, c-format
msgid "%s is not deployed?"
msgstr ""
@ -364,12 +356,7 @@ msgstr ""
msgid "%s is still deployed. Run \"abra app undeploy %s\""
msgstr ""
#: ./cli/app/env.go:132
#, c-format
msgid "%s missing context, run \"abra server add %s\"?"
msgstr ""
#: ./cli/app/deploy.go:184 ./cli/app/upgrade.go:210
#: ./cli/app/deploy.go:182 ./cli/app/upgrade.go:208
#, c-format
msgid "%s missing from %s.env"
msgstr ""
@ -434,11 +421,6 @@ msgstr ""
msgid "%s successfully added"
msgstr ""
#: ./cli/app/env.go:301
#, c-format
msgid "%s successfully created"
msgstr ""
#: ./cli/app/secret.go:254
#, c-format
msgid "%s successfully stored on server"
@ -484,7 +466,7 @@ msgstr ""
msgid "%s: %s → %s"
msgstr ""
#: ./pkg/app/app.go:523
#: ./pkg/app/app.go:514
#, c-format
msgid "%s: %s: %s"
msgstr ""
@ -549,12 +531,12 @@ msgstr ""
msgid "%s: waiting %d seconds before next retry"
msgstr ""
#: ./cli/app/upgrade.go:423
#: ./cli/app/upgrade.go:421
#, c-format
msgid "'%s' is not a known version"
msgstr ""
#: ./cli/app/rollback.go:303 ./cli/app/upgrade.go:418
#: ./cli/app/rollback.go:300 ./cli/app/upgrade.go:416
#, c-format
msgid "'%s' is not a known version for %s"
msgstr ""
@ -621,7 +603,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:395 ./cli/app/labels.go:143 ./cli/app/new.go:397 ./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/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:393 ./cli/app/labels.go:143 ./cli/app/new.go:397 ./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
msgid "C"
msgstr ""
@ -762,7 +744,7 @@ msgid "Creates a new app from a default recipe.\n"
"on your $PATH."
msgstr ""
#: ./cli/app/deploy.go:411 ./cli/app/new.go:373 ./cli/app/rollback.go:360 ./cli/app/upgrade.go:469
#: ./cli/app/deploy.go:409 ./cli/app/new.go:373 ./cli/app/rollback.go:357 ./cli/app/upgrade.go:467
msgid "D"
msgstr ""
@ -812,7 +794,7 @@ msgid "Downloads a backup.tar.gz to the current working directory.\n"
"\"backupbot.backup.path\" labels."
msgstr ""
#: ./cli/app/env.go:70
#: ./cli/app/env.go:48
msgid "ENV OVERVIEW"
msgstr ""
@ -957,11 +939,6 @@ msgstr ""
msgid "Lint a recipe"
msgstr ""
#. translators: Short description for `app env list` command
#: ./cli/app/env.go:46
msgid "List all app environment values"
msgstr ""
#. translators: Short description for `app cmd list` command
#: ./cli/app/cmd.go:210
msgid "List all available commands"
@ -1016,11 +993,6 @@ msgstr ""
msgid "Manage app backups"
msgstr ""
#. translators: Short description for `app env` command group
#: ./cli/app/env.go:314
msgid "Manage app environment values"
msgstr ""
#. translators: Short description for `app secret` command group
#: ./cli/app/secret.go:537
msgid "Manage app secrets"
@ -1127,18 +1099,6 @@ msgid "Prunes unused containers, networks, and dangling images.\n"
"app. This can result in unwanted data loss if not used carefully."
msgstr ""
#. translators: Short description for `app env pull` command
#: ./cli/app/env.go:80
msgid "Pull app environment values from a deployed app"
msgstr ""
#: ./cli/app/env.go:81
msgid "Pull app environment values from a deploymed app.\n"
"\n"
"A convenient command for when you've lost your app environment file or want to\n"
"synchronize your local app environment values with what is deployed live."
msgstr ""
#: ./pkg/lint/recipe.go:110
msgid "README.md metadata filled in"
msgstr ""
@ -1232,7 +1192,7 @@ msgid "Restore a snapshot"
msgstr ""
#. translators: Short description for `app rollback` command
#: ./cli/app/rollback.go:34
#: ./cli/app/rollback.go:33
msgid "Roll an app back to a previous version"
msgstr ""
@ -1308,6 +1268,11 @@ msgstr ""
msgid "Select recipe"
msgstr ""
#. translators: Short description for `app env` command
#: ./cli/app/env.go:24
msgid "Show app .env values"
msgstr ""
#. translators: Short description for `app labels` command
#: ./cli/app/labels.go:32
msgid "Show deployment labels"
@ -1405,7 +1370,7 @@ msgid "This command restarts services within a deployed app.\n"
"Pass \"--all-services/-a\" to restart all services."
msgstr ""
#: ./cli/app/rollback.go:35
#: ./cli/app/rollback.go:34
msgid "This command rolls an app back to a previous version.\n"
"\n"
"Unlike \"abra app deploy\", chaos operations are not supported here. Only recipe\n"
@ -1422,7 +1387,7 @@ msgid "This command rolls an app back to a previous version.\n"
"beforehand. See \"abra app backup\" for more."
msgstr ""
#: ./cli/app/undeploy.go:32
#: ./cli/app/undeploy.go:31
msgid "This does not destroy any application data.\n"
"\n"
"However, you should remain vigilant, as your swarm installation will consider\n"
@ -1469,7 +1434,7 @@ msgid "To load completions:\n"
" # and source this file from your PowerShell profile."
msgstr ""
#: ./cli/app/deploy.go:435 ./cli/app/rollback.go:376 ./cli/app/upgrade.go:493
#: ./cli/app/deploy.go:433 ./cli/app/rollback.go:373 ./cli/app/upgrade.go:491
msgid "U"
msgstr ""
@ -1485,10 +1450,6 @@ msgstr ""
msgid "UPGRADE"
msgstr ""
#: ./cli/app/undeploy.go:31
msgid "Undeploy a deployed app"
msgstr ""
#: ./cli/recipe/upgrade.go:50
msgid "Upgrade a given <recipe> configuration.\n"
"\n"
@ -1760,7 +1721,7 @@ msgstr ""
msgid "add release note? (leave empty to skip)"
msgstr ""
#: ./pkg/app/app.go:512
#: ./pkg/app/app.go:508
#, c-format
msgid "adding env vars to %s service config"
msgstr ""
@ -1844,7 +1805,7 @@ msgstr ""
msgid "attempting to run %s"
msgstr ""
#: ./cli/app/deploy.go:272 ./cli/app/upgrade.go:295
#: ./cli/app/deploy.go:270 ./cli/app/upgrade.go:293
#, c-format
msgid "attempting to run post deploy commands, saw: %s"
msgstr ""
@ -1869,7 +1830,7 @@ msgstr ""
msgid "autocomplete [bash|zsh|fish|powershell]"
msgstr ""
#: ./cli/app/deploy.go:65 ./cli/app/logs.go:39 ./cli/app/rollback.go:65 ./cli/app/secret.go:49 ./cli/app/secret.go:191 ./cli/app/secret.go:360 ./cli/app/upgrade.go:63 ./pkg/autocomplete/autocomplete.go:18 ./pkg/autocomplete/autocomplete.go:33 ./pkg/autocomplete/autocomplete.go:44 ./pkg/autocomplete/autocomplete.go:50 ./pkg/autocomplete/autocomplete.go:70 ./pkg/autocomplete/autocomplete.go:88 ./pkg/autocomplete/autocomplete.go:104 ./pkg/autocomplete/autocomplete.go:110 ./pkg/autocomplete/autocomplete.go:125
#: ./cli/app/deploy.go:65 ./cli/app/logs.go:39 ./cli/app/rollback.go:64 ./cli/app/secret.go:49 ./cli/app/secret.go:191 ./cli/app/secret.go:360 ./cli/app/upgrade.go:63 ./pkg/autocomplete/autocomplete.go:18 ./pkg/autocomplete/autocomplete.go:33 ./pkg/autocomplete/autocomplete.go:44 ./pkg/autocomplete/autocomplete.go:50 ./pkg/autocomplete/autocomplete.go:70 ./pkg/autocomplete/autocomplete.go:88 ./pkg/autocomplete/autocomplete.go:104 ./pkg/autocomplete/autocomplete.go:110 ./pkg/autocomplete/autocomplete.go:125
#, c-format
msgid "autocomplete failed: %s"
msgstr ""
@ -1924,7 +1885,7 @@ msgstr ""
#. no spaces in between
#. translators: `abra app cp` aliases. use a comma separated list of aliases with
#. no spaces in between
#: ./cli/app/backup.go:148 ./cli/app/cp.go:30 ./cli/app/deploy.go:419 ./cli/app/rollback.go:368 ./cli/app/upgrade.go:477
#: ./cli/app/backup.go:148 ./cli/app/cp.go:30 ./cli/app/deploy.go:417 ./cli/app/rollback.go:365 ./cli/app/upgrade.go:475
msgid "c"
msgstr ""
@ -1980,7 +1941,7 @@ msgstr ""
msgid "cannot redeploy previous chaos version (%s), did you mean to use \"--chaos\"?"
msgstr ""
#: ./cli/app/deploy.go:369
#: ./cli/app/deploy.go:367
#, c-format
msgid "cannot redeploy previous chaos version (%s), did you mean to use \"--chaos\"?\n"
" to return to a regular release, specify a release tag, commit SHA or use \"--latest\""
@ -1999,7 +1960,7 @@ msgstr ""
msgid "cannot use '[secret] [version]' and '--all' together"
msgstr ""
#: ./cli/app/deploy.go:311
#: ./cli/app/deploy.go:309
msgid "cannot use --chaos and --latest together"
msgstr ""
@ -2023,11 +1984,11 @@ msgstr ""
msgid "cannot use [service] and --all-services/-a together"
msgstr ""
#: ./cli/app/deploy.go:303 ./cli/app/new.go:76
#: ./cli/app/deploy.go:301 ./cli/app/new.go:76
msgid "cannot use [version] and --chaos together"
msgstr ""
#: ./cli/app/deploy.go:307
#: ./cli/app/deploy.go:305
msgid "cannot use [version] and --latest together"
msgstr ""
@ -2059,7 +2020,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:394 ./cli/app/labels.go:142 ./cli/app/new.go:396 ./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/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:392 ./cli/app/labels.go:142 ./cli/app/new.go:396 ./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
msgid "chaos"
msgstr ""
@ -2068,7 +2029,7 @@ msgstr ""
msgid "check <domain> [flags]"
msgstr ""
#: ./cli/app/deploy.go:94 ./cli/app/undeploy.go:58 ./cli/app/upgrade.go:441
#: ./cli/app/deploy.go:94 ./cli/app/undeploy.go:57 ./cli/app/upgrade.go:439
#, c-format
msgid "checking whether %s is already deployed"
msgstr ""
@ -2089,7 +2050,7 @@ msgstr ""
msgid "choosing %s as new version for %s"
msgstr ""
#: ./cli/app/rollback.go:152
#: ./cli/app/rollback.go:151
#, c-format
msgid "choosing %s as version to rollback"
msgstr ""
@ -2219,7 +2180,7 @@ msgstr ""
msgid "considering %s config(s) for tag update"
msgstr ""
#: ./cli/app/undeploy.go:141 ./cli/server/prune.go:53
#: ./cli/app/undeploy.go:140 ./cli/server/prune.go:53
#, c-format
msgid "containers pruned: %d; space reclaimed: %s"
msgstr ""
@ -2350,7 +2311,7 @@ msgstr ""
msgid "critical errors present in %s config"
msgstr ""
#: ./cli/app/rollback.go:298
#: ./cli/app/rollback.go:295
#, c-format
msgid "current deployment '%s' is not a known version for %s"
msgstr ""
@ -2402,7 +2363,7 @@ msgstr ""
msgid "deploy labels stanza present"
msgstr ""
#: ./cli/app/deploy.go:429
#: ./cli/app/deploy.go:427
msgid "deploy latest recipe version"
msgstr ""
@ -2504,11 +2465,11 @@ msgstr ""
msgid "dirty: %v, "
msgstr ""
#: ./cli/app/deploy.go:421 ./cli/app/rollback.go:370 ./cli/app/upgrade.go:479
#: ./cli/app/deploy.go:419 ./cli/app/rollback.go:367 ./cli/app/upgrade.go:477
msgid "disable converge logic checks"
msgstr ""
#: ./cli/app/deploy.go:413 ./cli/app/rollback.go:362 ./cli/app/upgrade.go:471
#: ./cli/app/deploy.go:411 ./cli/app/rollback.go:359 ./cli/app/upgrade.go:469
msgid "disable public DNS checks"
msgstr ""
@ -2606,9 +2567,9 @@ msgstr ""
msgid "duplicate secret target for %s not allowed"
msgstr ""
#. translators: `abra app env` aliases. use a comma separated list of aliases
#. with no spaces in between
#: ./cli/app/env.go:31 ./cli/recipe/lint.go:145 ./cli/recipe/new.go:131
#. translators: `abra app env` aliases. use a comma separated list of aliases with
#. no spaces in between
#: ./cli/app/env.go:17 ./cli/recipe/lint.go:145 ./cli/recipe/new.go:131
msgid "e"
msgstr ""
@ -2647,9 +2608,9 @@ msgstr ""
msgid "enter / return to confirm, choose 'skip' to not upgrade this tag, vim mode is enabled"
msgstr ""
#. translators: `app env` command group
#: ./cli/app/env.go:311
msgid "env [cmd] [args] [flags]"
#. translators: `app env` command
#: ./cli/app/env.go:21
msgid "env <domain> [flags]"
msgstr ""
#: ./pkg/app/app.go:248
@ -2726,7 +2687,7 @@ msgstr ""
#. translators: `abra recipe fetch` aliases. use a comma separated list of aliases
#. with no spaces in between
#: ./cli/app/deploy.go:403 ./cli/app/env.go:325 ./cli/app/remove.go:163 ./cli/app/rollback.go:352 ./cli/app/secret.go:593 ./cli/app/upgrade.go:461 ./cli/app/volume.go:217 ./cli/recipe/fetch.go:20 ./cli/recipe/fetch.go:138
#: ./cli/app/deploy.go:401 ./cli/app/remove.go:163 ./cli/app/rollback.go:349 ./cli/app/secret.go:593 ./cli/app/upgrade.go:459 ./cli/app/volume.go:217 ./cli/recipe/fetch.go:20 ./cli/recipe/fetch.go:138
msgid "f"
msgstr ""
@ -2952,12 +2913,7 @@ msgstr ""
msgid "filter by recipe"
msgstr ""
#: ./cli/app/env.go:229
#, c-format
msgid "final merged env values for %s are: %s"
msgstr ""
#: ./cli/app/deploy.go:402 ./cli/app/env.go:324 ./cli/app/remove.go:162 ./cli/app/rollback.go:351 ./cli/app/upgrade.go:460 ./cli/app/volume.go:216 ./cli/recipe/fetch.go:137
#: ./cli/app/deploy.go:400 ./cli/app/remove.go:162 ./cli/app/rollback.go:348 ./cli/app/upgrade.go:458 ./cli/app/volume.go:216 ./cli/recipe/fetch.go:137
msgid "force"
msgstr ""
@ -3171,11 +3127,11 @@ 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:397 ./cli/app/labels.go:145 ./cli/app/new.go:399 ./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/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:395 ./cli/app/labels.go:145 ./cli/app/new.go:399 ./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
msgid "ignore uncommitted recipes changes"
msgstr ""
#: ./cli/app/undeploy.go:156 ./cli/server/prune.go:74
#: ./cli/app/undeploy.go:155 ./cli/server/prune.go:74
#, c-format
msgid "images pruned: %d; space reclaimed: %s"
msgstr ""
@ -3295,21 +3251,6 @@ msgstr ""
msgid "insert <domain> <secret> <version> [<data>] [flags]"
msgstr ""
#: ./cli/app/env.go:290
#, c-format
msgid "inserting %s=%s (no quotes)"
msgstr ""
#: ./cli/app/env.go:283
#, c-format
msgid "inserting %s='%s' (single quotes)"
msgstr ""
#: ./cli/app/env.go:276
#, c-format
msgid "inserting %s=\"%s\" (double quotes)"
msgstr ""
#: ./cli/upgrade.go:62
msgid "install release candidate (may contain bugs)"
msgstr ""
@ -3369,22 +3310,16 @@ msgstr ""
#. no spaces in between
#. translators: `abra recipe lint` aliases. use a comma separated list of
#. aliases with no spaces in between
#: ./cli/app/cmd.go:261 ./cli/app/deploy.go:427 ./cli/app/logs.go:20 ./cli/recipe/lint.go:17 ./cli/server/add.go:207
#: ./cli/app/cmd.go:261 ./cli/app/deploy.go:425 ./cli/app/logs.go:20 ./cli/recipe/lint.go:17 ./cli/server/add.go:207
msgid "l"
msgstr ""
#. translators: `abra app env list` aliases. use a comma separated list of
#. aliases with no spaces in between
#: ./cli/app/env.go:35
msgid "l,ls"
msgstr ""
#. translators: `app labels` command
#: ./cli/app/labels.go:29
msgid "labels <domain> [flags]"
msgstr ""
#: ./cli/app/deploy.go:426 ./cli/app/list.go:182
#: ./cli/app/deploy.go:424 ./cli/app/list.go:182
msgid "latest"
msgstr ""
@ -3426,9 +3361,8 @@ msgstr ""
#. translators: `app backup list` command
#. translators: `app cmd list` command
#. translators: `app env list` command
#. translators: `app volume list` command
#: ./cli/app/backup.go:21 ./cli/app/cmd.go:207 ./cli/app/env.go:43 ./cli/app/volume.go:25
#: ./cli/app/backup.go:21 ./cli/app/cmd.go:207 ./cli/app/volume.go:25
msgid "list <domain> [flags]"
msgstr ""
@ -3540,11 +3474,6 @@ msgstr ""
msgid "man [flags]"
msgstr ""
#: ./cli/app/env.go:304
#, c-format
msgid "manual update required: COMPOSE_FILE=\"%s\""
msgstr ""
#: ./cli/app/move.go:204
#, c-format
msgid "migrating app config from %s to %s"
@ -3624,7 +3553,7 @@ msgstr ""
msgid "network %q is declared as external, but it is not in the right scope: %q instead of \"swarm\""
msgstr ""
#: ./cli/app/undeploy.go:148 ./cli/server/prune.go:60
#: ./cli/app/undeploy.go:147 ./cli/server/prune.go:60
#, c-format
msgid "networks pruned: %d"
msgstr ""
@ -3692,7 +3621,7 @@ msgstr ""
msgid "no app provided"
msgstr ""
#: ./cli/app/rollback.go:127
#: ./cli/app/rollback.go:126
msgid "no available downgrades"
msgstr ""
@ -3815,11 +3744,6 @@ msgstr ""
msgid "no unstable tags"
msgstr ""
#: ./cli/app/env.go:165
#, c-format
msgid "no value attached to %s"
msgstr ""
#: ./cli/internal/recipe.go:72 ./cli/internal/recipe.go:87
msgid "no version bump type specififed?"
msgstr ""
@ -3842,11 +3766,11 @@ msgstr ""
msgid "no volumes to remove"
msgstr ""
#: ./cli/app/deploy.go:418 ./cli/app/rollback.go:367 ./cli/app/upgrade.go:476
#: ./cli/app/deploy.go:416 ./cli/app/rollback.go:364 ./cli/app/upgrade.go:474
msgid "no-converge-checks"
msgstr ""
#: ./cli/app/deploy.go:410 ./cli/app/rollback.go:359 ./cli/app/upgrade.go:468
#: ./cli/app/deploy.go:408 ./cli/app/rollback.go:356 ./cli/app/upgrade.go:466
msgid "no-domain-checks"
msgstr ""
@ -3902,7 +3826,7 @@ msgstr ""
msgid "only show errors"
msgstr ""
#: ./cli/app/upgrade.go:487
#: ./cli/app/upgrade.go:485
msgid "only show release notes"
msgstr ""
@ -3914,7 +3838,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:381 ./cli/app/ps.go:29 ./cli/app/secret.go:561 ./cli/app/secret.go:585 ./cli/app/secret.go:625 ./cli/app/undeploy.go:169 ./cli/catalogue/catalogue.go:294 ./cli/recipe/list.go:112 ./cli/recipe/release.go:681 ./cli/server/prune.go:18
#: ./cli/app/backup.go:295 ./cli/app/new.go:381 ./cli/app/ps.go:29 ./cli/app/secret.go:561 ./cli/app/secret.go:585 ./cli/app/secret.go:625 ./cli/app/undeploy.go:168 ./cli/catalogue/catalogue.go:294 ./cli/recipe/list.go:112 ./cli/recipe/release.go:681 ./cli/server/prune.go:18
msgid "p"
msgstr ""
@ -3933,22 +3857,22 @@ msgstr ""
msgid "parsed following command arguments: %s"
msgstr ""
#: ./cli/app/upgrade.go:344
#: ./cli/app/upgrade.go:342
#, c-format
msgid "parsing chosen upgrade version failed: %s"
msgstr ""
#: ./cli/app/upgrade.go:388
#: ./cli/app/upgrade.go:386
#, c-format
msgid "parsing deployed version failed: %s"
msgstr ""
#: ./cli/app/upgrade.go:349
#: ./cli/app/upgrade.go:347
#, c-format
msgid "parsing deployment version failed: %s"
msgstr ""
#: ./cli/app/upgrade.go:355 ./cli/app/upgrade.go:394
#: ./cli/app/upgrade.go:353 ./cli/app/upgrade.go:392
#, c-format
msgid "parsing recipe version failed: %s"
msgstr ""
@ -3973,37 +3897,31 @@ msgstr ""
msgid "pattern"
msgstr ""
#: ./cli/app/deploy.go:405 ./cli/app/env.go:327 ./cli/app/remove.go:165 ./cli/app/rollback.go:354 ./cli/app/upgrade.go:463 ./cli/app/volume.go:219
#: ./cli/app/deploy.go:403 ./cli/app/remove.go:165 ./cli/app/rollback.go:351 ./cli/app/upgrade.go:461 ./cli/app/volume.go:219
msgid "perform action without further prompt"
msgstr ""
#. translators: `abra app env pull` aliases. use a comma separated list of
#. aliases with no spaces in between
#: ./cli/app/env.go:39
msgid "pl,p"
msgstr ""
#: ./cli/recipe/release.go:634
#, c-format
msgid "please fix your synced label for %s and re-run this command"
msgstr ""
#: ./cli/app/rollback.go:266
#: ./cli/app/rollback.go:263
#, c-format
msgid "please select a downgrade (version: %s):"
msgstr ""
#: ./cli/app/rollback.go:271
#: ./cli/app/rollback.go:268
#, c-format
msgid "please select a downgrade (version: %s, chaos: %s):"
msgstr ""
#: ./cli/app/upgrade.go:311
#: ./cli/app/upgrade.go:309
#, c-format
msgid "please select an upgrade (version: %s):"
msgstr ""
#: ./cli/app/upgrade.go:316
#: ./cli/app/upgrade.go:314
#, c-format
msgid "please select an upgrade (version: %s, chaos: %s):"
msgstr ""
@ -4042,7 +3960,7 @@ msgstr ""
msgid "proposed images: %v"
msgstr ""
#: ./cli/app/undeploy.go:168
#: ./cli/app/undeploy.go:167
msgid "prune"
msgstr ""
@ -4051,7 +3969,7 @@ msgstr ""
msgid "prune <server> [flags]"
msgstr ""
#: ./cli/app/undeploy.go:171
#: ./cli/app/undeploy.go:170
msgid "prune unused containers, networks, and dangling images"
msgstr ""
@ -4076,16 +3994,6 @@ msgstr ""
msgid "publish new release?"
msgstr ""
#. translators: `app pull` command
#: ./cli/app/env.go:77
msgid "pull <domain> [flags]"
msgstr ""
#: ./cli/app/env.go:173
#, c-format
msgid "pulled env values from %s deployment: %s"
msgstr ""
#: ./pkg/app/app.go:429
msgid "querying remote servers..."
msgstr ""
@ -4094,7 +4002,7 @@ msgstr ""
#. with no spaces in between
#. translators: `abra recipe` aliases. use a comma separated list of aliases
#. with no spaces in between
#: ./cli/app/backup.go:327 ./cli/app/list.go:300 ./cli/app/move.go:350 ./cli/app/run.go:23 ./cli/app/upgrade.go:485 ./cli/catalogue/catalogue.go:302 ./cli/recipe/recipe.go:12 ./cli/recipe/release.go:649 ./cli/recipe/sync.go:272
#: ./cli/app/backup.go:327 ./cli/app/list.go:300 ./cli/app/move.go:350 ./cli/app/run.go:23 ./cli/app/upgrade.go:483 ./cli/catalogue/catalogue.go:302 ./cli/recipe/recipe.go:12 ./cli/recipe/release.go:649 ./cli/recipe/sync.go:272
msgid "r"
msgstr ""
@ -4109,12 +4017,12 @@ msgstr ""
msgid "read %s as tags for recipe %s"
msgstr ""
#: ./pkg/app/app.go:584 ./pkg/config/env.go:50 ./pkg/envfile/envfile.go:42 ./pkg/envfile/envfile.go:80
#: ./pkg/app/app.go:575 ./pkg/config/env.go:50 ./pkg/envfile/envfile.go:42 ./pkg/envfile/envfile.go:80
#, c-format
msgid "read %s from %s"
msgstr ""
#: ./pkg/app/app.go:586
#: ./pkg/app/app.go:577
#, c-format
msgid "read 0 command names from %s"
msgstr ""
@ -4210,7 +4118,7 @@ msgstr ""
msgid "release <recipe> [version] [flags]"
msgstr ""
#: ./cli/app/upgrade.go:484
#: ./cli/app/upgrade.go:482
msgid "releasenotes"
msgstr ""
@ -4432,11 +4340,6 @@ msgstr ""
msgid "retrieved app statuses: %s"
msgstr ""
#: ./cli/app/env.go:219
#, c-format
msgid "retrieved env values from .env.sample of %s: %s"
msgstr ""
#: ./cli/recipe/version.go:46
msgid "retrieved versions from local recipe repository"
msgstr ""
@ -4454,7 +4357,7 @@ msgstr ""
#. aliases with no spaces in between
#. translators: `abra recipe release` aliases. use a comma separated list of
#. aliases with no spaces in between
#: ./cli/app/rollback.go:27 ./cli/recipe/release.go:28
#: ./cli/app/rollback.go:26 ./cli/recipe/release.go:28
msgid "rl"
msgstr ""
@ -4471,7 +4374,7 @@ msgid "rm"
msgstr ""
#. translators: `app rollback` command
#: ./cli/app/rollback.go:31
#: ./cli/app/rollback.go:30
msgid "rollback <domain> [version] [flags]"
msgstr ""
@ -4514,7 +4417,7 @@ msgstr ""
msgid "run command locally"
msgstr ""
#: ./cli/app/deploy.go:270 ./cli/app/upgrade.go:292
#: ./cli/app/deploy.go:268 ./cli/app/upgrade.go:290
#, c-format
msgid "run the following post-deploy commands: %s"
msgstr ""
@ -4557,7 +4460,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/env.go:333 ./cli/app/list.go:323 ./cli/app/logs.go:101 ./cli/app/new.go:358 ./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:323 ./cli/app/logs.go:101 ./cli/app/new.go:358 ./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 ""
@ -4599,12 +4502,12 @@ msgstr ""
msgid "secret not found: %s"
msgstr ""
#: ./cli/app/deploy.go:339
#: ./cli/app/deploy.go:337
#, c-format
msgid "secret not generated: %s"
msgstr ""
#: ./cli/app/deploy.go:337
#: ./cli/app/deploy.go:335
#, c-format
msgid "secret not inserted (#generate=false): %s"
msgstr ""
@ -4624,7 +4527,7 @@ msgid "secrets are %s shown again, please save them %s"
msgstr ""
#. translators: `abra server` command for autocompletion
#: ./cli/app/env.go:332 ./cli/app/env.go:339 ./cli/app/list.go:322 ./cli/app/list.go:329 ./cli/app/new.go:357 ./cli/app/new.go:364 ./cli/run.go:101
#: ./cli/app/list.go:322 ./cli/app/list.go:329 ./cli/app/new.go:357 ./cli/app/new.go:364 ./cli/run.go:101
msgid "server"
msgstr ""
@ -4638,10 +4541,6 @@ msgstr ""
msgid "server [cmd] [args] [flags]"
msgstr ""
#: ./cli/app/env.go:335
msgid "server associated with deployed app"
msgstr ""
#: ./cli/server/add.go:191
#, c-format
msgid "server dir for %s already created"
@ -4728,7 +4627,7 @@ msgstr ""
msgid "severity"
msgstr ""
#: ./cli/app/deploy.go:437 ./cli/app/rollback.go:378 ./cli/app/upgrade.go:495
#: ./cli/app/deploy.go:435 ./cli/app/rollback.go:375 ./cli/app/upgrade.go:493
msgid "show all configs & images, including unchanged ones"
msgstr ""
@ -4752,7 +4651,7 @@ msgstr ""
msgid "show debug messages"
msgstr ""
#: ./cli/app/deploy.go:434 ./cli/app/rollback.go:375 ./cli/app/upgrade.go:492
#: ./cli/app/deploy.go:432 ./cli/app/rollback.go:372 ./cli/app/upgrade.go:490
msgid "show-unchanged"
msgstr ""
@ -4800,11 +4699,11 @@ msgstr ""
msgid "skipping converge logic checks"
msgstr ""
#: ./cli/app/deploy.go:198
#: ./cli/app/deploy.go:196
msgid "skipping domain checks"
msgstr ""
#: ./cli/app/deploy.go:195
#: ./cli/app/deploy.go:193
msgid "skipping domain checks, no DOMAIN=... configured"
msgstr ""
@ -4818,12 +4717,12 @@ msgstr ""
msgid "skipping secret (because it already exists) on %s: %s"
msgstr ""
#: ./pkg/app/app.go:692
#: ./pkg/app/app.go:683
#, c-format
msgid "skipping version %s write as already exists in %s.env"
msgstr ""
#: ./pkg/app/app.go:686
#: ./pkg/app/app.go:677
#, c-format
msgid "skipping writing version %s because dry run"
msgstr ""
@ -5135,16 +5034,6 @@ msgstr ""
msgid "unable to delete tag %s: %s"
msgstr ""
#: ./cli/app/env.go:191
#, c-format
msgid "unable to determine recipe type from %s, env: %v"
msgstr ""
#: ./cli/app/env.go:106
#, c-format
msgid "unable to determine server of app %s, please pass --server/-s"
msgstr ""
#: ./cli/recipe/upgrade.go:253
#, c-format
msgid "unable to determine versioning semantics of %s, listing all tags"
@ -5175,11 +5064,6 @@ msgstr ""
msgid "unable to git pull in %s: %s"
msgstr ""
#: ./cli/app/env.go:158
#, c-format
msgid "unable to inspect container for %s: %s"
msgstr ""
#: ./pkg/lint/recipe.go:496
#, c-format
msgid "unable to list local tags for %s"
@ -5189,11 +5073,6 @@ msgstr ""
msgid "unable to locate git command, cannot output diff"
msgstr ""
#: ./cli/app/env.go:117
#, c-format
msgid "unable to look up server context for %s: %s"
msgstr ""
#: ./cli/recipe/fetch.go:77 ./pkg/git/read.go:26 ./pkg/lint/recipe.go:491 ./pkg/recipe/git.go:236
#, c-format
msgid "unable to open %s: %s"
@ -5249,11 +5128,6 @@ msgstr ""
msgid "unable to query status of %s: %s"
msgstr ""
#: ./cli/app/env.go:243
#, c-format
msgid "unable to read new env %s: %s"
msgstr ""
#: ./pkg/recipe/git.go:241
#, c-format
msgid "unable to read remotes in %s: %s"
@ -5304,11 +5178,6 @@ msgstr ""
msgid "unable to retrieve %s resources on %s: %s"
msgstr ""
#: ./cli/app/env.go:153
#, c-format
msgid "unable to retrieve container for %s: %s"
msgstr ""
#: ./cli/app/list.go:153
#, c-format
msgid "unable to retrieve tags for %s: %s"
@ -5339,16 +5208,6 @@ msgstr ""
msgid "unable to validate recipe: %s"
msgstr ""
#: ./cli/app/env.go:238 ./cli/app/env.go:298
#, c-format
msgid "unable to write new env %s: %s"
msgstr ""
#: ./cli/app/env.go:264 ./cli/app/env.go:270
#, c-format
msgid "uncommenting %s"
msgstr ""
#: ./pkg/upstream/convert/service.go:462
#, c-format
msgid "undefined config %q"
@ -5374,7 +5233,7 @@ msgstr ""
msgid "undeploy <domain> [flags]"
msgstr ""
#: ./cli/app/undeploy.go:117
#: ./cli/app/undeploy.go:116
msgid "undeploy succeeded 🟢"
msgstr ""
@ -5407,7 +5266,7 @@ msgstr ""
msgid "unknown"
msgstr ""
#: ./cli/app/rollback.go:149
#: ./cli/app/rollback.go:148
msgid "unknown deployed version, unable to downgrade"
msgstr ""
@ -5430,11 +5289,6 @@ msgstr ""
msgid "unknown restart policy: %s"
msgstr ""
#: ./cli/app/env.go:111
#, c-format
msgid "unknown server %s, run \"abra server add %s\"?"
msgstr ""
#: ./pkg/client/client.go:51
#, c-format
msgid "unknown server, run \"abra server add %s\"?"
@ -5563,7 +5417,7 @@ msgstr ""
msgid "version"
msgstr ""
#: ./pkg/app/app.go:690
#: ./pkg/app/app.go:681
#, c-format
msgid "version %s saved to %s.env"
msgstr ""
@ -5587,32 +5441,32 @@ msgstr ""
msgid "version seems invalid: %s"
msgstr ""
#: ./pkg/app/app.go:629
#: ./pkg/app/app.go:620
#, c-format
msgid "version wiped from %s.env"
msgstr ""
#: ./cli/app/deploy.go:353
#: ./cli/app/deploy.go:351
#, c-format
msgid "version: taking chaos version: %s"
msgstr ""
#: ./cli/app/deploy.go:379
#: ./cli/app/deploy.go:377
#, c-format
msgid "version: taking deployed version: %s"
msgstr ""
#: ./cli/app/deploy.go:384
#: ./cli/app/deploy.go:382
#, c-format
msgid "version: taking new recipe version: %s"
msgstr ""
#: ./cli/app/deploy.go:373
#: ./cli/app/deploy.go:371
#, c-format
msgid "version: taking version from .env file: %s"
msgstr ""
#: ./cli/app/deploy.go:359
#: ./cli/app/deploy.go:357
#, c-format
msgid "version: taking version from cli arg: %s"
msgstr ""
@ -5735,7 +5589,7 @@ msgstr ""
msgid "writer: %v, "
msgstr ""
#: ./cli/app/deploy.go:277 ./cli/app/new.go:241 ./cli/app/rollback.go:255 ./cli/app/undeploy.go:120 ./cli/app/upgrade.go:300
#: ./cli/app/deploy.go:275 ./cli/app/new.go:241 ./cli/app/rollback.go:252 ./cli/app/undeploy.go:119 ./cli/app/upgrade.go:298
#, c-format
msgid "writing recipe version failed: %s"
msgstr ""

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -127,14 +127,3 @@ teardown(){
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
}
# bats test_tags=slow
@test "new env version written to container env" {
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.0+1.20.0" --no-input
assert_success
run docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' \
$(docker ps -f name="$TEST_APP_DOMAIN_$TEST_SERVER" -q)
assert_success
assert_output --partial "$TEST_RECIIPE:0.1.0+1.20.0"
}

View File

@ -28,17 +28,17 @@ teardown(){
}
@test "validate app argument" {
run $ABRA app env list
run $ABRA app env
assert_failure
run $ABRA app env list DOESNTEXIST
run $ABRA app env DOESNTEXIST
assert_failure
}
@test "show env version" {
latestRelease=$(_latest_release)
run $ABRA app env list "$TEST_APP_DOMAIN"
run $ABRA app env "$TEST_APP_DOMAIN"
assert_success
assert_output --partial "$latestRelease"
}
@ -48,7 +48,7 @@ teardown(){
assert_success
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
run $ABRA app env list "$TEST_APP_DOMAIN"
run $ABRA app env "$TEST_APP_DOMAIN"
assert_success
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
@ -57,44 +57,3 @@ teardown(){
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
}
@test "app env pull explodes when no deployed app" {
run $ABRA app env pull "$TEST_APP_DOMAIN" -s "$TEST_SERVER"
assert_failure
}
# bats test_tags=slow
@test "app env pull recreates app env when missing" {
run $ABRA app deploy "$TEST_APP_DOMAIN" --no-input
assert_success
run rm -rf "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
assert_not_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
run $ABRA app env pull "$TEST_APP_DOMAIN" -s "$TEST_SERVER"
assert_success
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
}
# bats test_tags=slow
@test "app env pull recreates correct version" {
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.0+1.20.0" --no-input
assert_success
run grep -q "TYPE=$TEST_RECIPE:0.1.0+1.20.0" \
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
run rm -rf "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
assert_not_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
run $ABRA app env pull "$TEST_APP_DOMAIN" -s "$TEST_SERVER"
assert_success
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
run grep -q "TYPE=$TEST_RECIPE:0.1.0+1.20.0" \
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
}

View File

@ -33,29 +33,10 @@ teardown(){
assert_success
run $ABRA app rollback "$TEST_APP_DOMAIN" "0.1.0+1.20.0" \
--no-input --no-converge-checks
--no-input --no-converge-checks --debug
assert_success
run grep -q "TYPE=abra-test-recipe:0.1.0+1.20.0" \
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
}
# bats test_tags=slow
@test "new env version written to container env" {
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.2.0+1.21.0" --no-input
assert_success
run grep -q "TYPE=abra-test-recipe:0.2.0+1.21.0" \
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
run $ABRA app rollback "$TEST_APP_DOMAIN" "0.1.0+1.20.0" \
--no-input
assert_success
run docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' \
$(docker ps -f name="$TEST_APP_DOMAIN_$TEST_SERVER" -q)
assert_success
assert_output --partial "$TEST_RECIIPE:0.1.0+1.20.0"
}

View File

@ -256,7 +256,7 @@ teardown(){
}
# bats test_tags=slow
@test "specific version upgrade after chaos deploy" {
@test "commit deploy upgrade is possible" {
tagHash=$(_get_tag_hash "0.1.0+1.20.0")
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$tagHash"
assert_success
@ -269,26 +269,17 @@ teardown(){
assert_success
assert_output --regexp "CURRENT DEPLOYMENT.*${tagHash:0:8}"
assert_output --regexp "ENV VERSION.*${tagHash:0:8}"
assert_output --regexp "NEW DEPLOYMENT.*0\.1\.1\+1\.20\.2"
}
# bats test_tags=slow
@test "upgrade to latest after chaos deploy" {
latestRelease=$(_latest_release)
tagHash=$(_get_tag_hash "0.1.0+1.20.0")
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$tagHash"
@test "chaos commit upgrade is possible" {
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.0+1.20.0" --no-input --no-converge-checks
assert_success
assert_output --partial '0.1.0+1.20.0'
run $ABRA app deploy "$TEST_APP_DOMAIN" --no-input --no-converge-checks --chaos
assert_success
assert_output --partial "${tagHash:0:8}"
tagHash=$(_get_tag_hash "0.2.0+1.21.0")
run $ABRA app upgrade "$TEST_APP_DOMAIN" --no-input --no-converge-checks
run $ABRA app upgrade "$TEST_APP_DOMAIN" "$tagHash" --no-input --no-converge-checks
assert_success
assert_output --regexp "CURRENT DEPLOYMENT.*${tagHash:0:8}"
assert_output --regexp "ENV VERSION.*${tagHash:0:8}"
assert_output --partial "${latestRelease}"
}
# bats test_tags=slow

View File

@ -40,21 +40,3 @@ teardown(){
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
}
# bats test_tags=slow
@test "new env version written to container env" {
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.0+1.20.0" --no-input
assert_success
run grep -q "TYPE=abra-test-recipe:0.1.0+1.20.0" \
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
assert_success
run $ABRA app upgrade "$TEST_APP_DOMAIN" "0.2.0+1.21.0" --no-input
assert_success
run docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' \
$(docker ps -f name="$TEST_APP_DOMAIN_$TEST_SERVER" -q)
assert_success
assert_output --partial "$TEST_RECIIPE:0.2.0+1.21.0"
}

View File

@ -101,9 +101,6 @@ teardown() {
assert_success
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
run $ABRA recipe sync "$TEST_RECIPE" --no-input --patch
assert_success
run $ABRA recipe release "$TEST_RECIPE" --no-input --patch
assert_success
assert_output --partial 'no -p/--publish passed, not publishing'
@ -122,9 +119,6 @@ teardown() {
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" commit -m "added some release notes"
assert_success
run $ABRA recipe sync "$TEST_RECIPE" --no-input --patch
assert_success
run $ABRA recipe release "$TEST_RECIPE" --no-input --minor
assert_success
assert_output --partial 'no -p/--publish passed, not publishing'