Appease formatter (kinda weird?)
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
3wc
2025-08-28 11:44:21 -04:00
parent 02b520200e
commit 6539b1be7e
40 changed files with 78 additions and 78 deletions

View File

@ -10,5 +10,5 @@ var AppCommand = &cobra.Command{
Use: i18n.G("app [cmd] [args] [flags]"),
Aliases: []string{i18n.G("a")},
// translators: Short description for `app` command group
Short: i18n.G("Manage apps"),
Short: i18n.G("Manage apps"),
}

View File

@ -16,8 +16,8 @@ var AppBackupListCommand = &cobra.Command{
Use: i18n.G("list <domain> [flags]"),
Aliases: []string{i18n.G("ls")},
// translators: Short description for `app backup list` command
Short: i18n.G("List the contents of a snapshot"),
Args: cobra.ExactArgs(1),
Short: i18n.G("List the contents of a snapshot"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
@ -68,7 +68,7 @@ var AppBackupDownloadCommand = &cobra.Command{
Use: i18n.G("download <domain> [flags]"),
Aliases: []string{i18n.G("d")},
// translators: Short description for `app backup download` command
Short: i18n.G("Download a snapshot"),
Short: i18n.G("Download a snapshot"),
Long: i18n.G(`Downloads a backup.tar.gz to the current working directory.
"--volumes/-v" includes data contained in volumes alongide paths specified in
@ -139,8 +139,8 @@ var AppBackupCreateCommand = &cobra.Command{
Use: i18n.G("create <domain> [flags]"),
Aliases: []string{i18n.G("c")},
// translators: Short description for `app backup create` command
Short: i18n.G("Create a new snapshot"),
Args: cobra.ExactArgs(1),
Short: i18n.G("Create a new snapshot"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
@ -185,8 +185,8 @@ var AppBackupSnapshotsCommand = &cobra.Command{
Use: i18n.G("snapshots <domain> [flags]"),
Aliases: []string{i18n.G("s")},
// translators: Short description for `app backup snapshots` command
Short: i18n.G("List all snapshots"),
Args: cobra.ExactArgs(1),
Short: i18n.G("List all snapshots"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
@ -222,7 +222,7 @@ var AppBackupCommand = &cobra.Command{
Use: i18n.G("backup [cmd] [args] [flags]"),
Aliases: []string{i18n.G("b")},
// translators: Short description for `app backup` command group
Short: i18n.G("Manage app backups"),
Short: i18n.G("Manage app backups"),
}
var (

View File

@ -18,7 +18,7 @@ var AppCheckCommand = &cobra.Command{
Use: i18n.G("check <domain> [flags]"),
Aliases: []string{i18n.G("chk")},
// translators: Short description for `app check` command
Short: i18n.G("Ensure an app is well configured"),
Short: i18n.G("Ensure an app is well configured"),
Long: i18n.G(`Compare env vars in both the app ".env" and recipe ".env.sample" file.
The goal is to ensure that recipe ".env.sample" env vars are defined in your

View File

@ -23,7 +23,7 @@ var AppCmdCommand = &cobra.Command{
Use: i18n.G("command <domain> [service | --local] <cmd> [[args] [flags] | [flags] -- [args]]"),
Aliases: []string{i18n.G("cmd")},
// translators: Short description for `app cmd` command
Short: i18n.G("Run app commands"),
Short: i18n.G("Run app commands"),
Long: i18n.G(`Run an app specific command.
These commands are bash functions, defined in the abra.sh of the recipe itself.
@ -199,8 +199,8 @@ var AppCmdListCommand = &cobra.Command{
Use: i18n.G("list <domain> [flags]"),
Aliases: []string{i18n.G("ls")},
// translators: Short description for `app cmd list` command
Short: i18n.G("List all available commands"),
Args: cobra.MinimumNArgs(1),
Short: i18n.G("List all available commands"),
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
app := internal.ValidateApp(args)

View File

@ -30,7 +30,7 @@ var AppCpCommand = &cobra.Command{
Use: i18n.G("cp <domain> <src> <dst> [flags]"),
Aliases: []string{i18n.G("c")},
// translators: Short description for `app cp` command
Short: i18n.G("Copy files to/from a deployed app service"),
Short: i18n.G("Copy files to/from a deployed app service"),
Example: i18n.G(` # copy myfile.txt to the root of the app service
abra app cp 1312.net myfile.txt app:/

View File

@ -29,7 +29,7 @@ var AppDeployCommand = &cobra.Command{
Use: i18n.G("deploy <domain> [version] [flags]"),
Aliases: []string{i18n.G("d")},
// translators: Short description for `app deploy` command
Short: i18n.G("Deploy an app"),
Short: i18n.G("Deploy an app"),
Long: i18n.G(`Deploy an app.
This command supports chaos operations. Use "--chaos/-C" to deploy your recipe

View File

@ -44,7 +44,7 @@ var AppListCommand = &cobra.Command{
Use: i18n.G("list [flags]"),
Aliases: []string{i18n.G("ls")},
// translators: Short description for `app list` command
Short: i18n.G("List all managed apps"),
Short: i18n.G("List all managed apps"),
Long: i18n.G(`Generate a report of all managed apps.
Use "--status/-S" flag to query all servers for the live deployment status.`),

View File

@ -19,8 +19,8 @@ var AppLogsCommand = &cobra.Command{
Use: i18n.G("logs <domain> [service] [flags]"),
Aliases: []string{i18n.G("l")},
// translators: Short description for `app logs` command
Short: i18n.G("Tail app logs"),
Args: cobra.RangeArgs(1, 2),
Short: i18n.G("Tail app logs"),
Args: cobra.RangeArgs(1, 2),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

@ -47,9 +47,9 @@ var AppNewCommand = &cobra.Command{
Use: i18n.G("new [recipe] [version] [flags]"),
Aliases: []string{i18n.G("n")},
// translators: Short description for `app new` command
Short: i18n.G("Create a new app"),
Long: appNewDescription,
Args: cobra.RangeArgs(0, 2),
Short: i18n.G("Create a new app"),
Long: appNewDescription,
Args: cobra.RangeArgs(0, 2),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

@ -29,8 +29,8 @@ var AppPsCommand = &cobra.Command{
Use: i18n.G("ps <domain> [flags]"),
Aliases: []string{i18n.G("p")},
// translators: Short description for `app ps` command
Short: i18n.G("Check app deployment status"),
Args: cobra.ExactArgs(1),
Short: i18n.G("Check app deployment status"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

@ -20,7 +20,7 @@ var AppRemoveCommand = &cobra.Command{
Use: i18n.G("remove <domain> [flags]"),
Aliases: []string{i18n.G("rm")},
// translators: Short description for `app remove` command
Short: i18n.G("Remove all app data, locally and remotely"),
Short: i18n.G("Remove all app data, locally and remotely"),
Long: i18n.G(`Remove everything related to an app which is already undeployed.
By default, it will prompt for confirmation before proceeding. All secrets,

View File

@ -22,7 +22,7 @@ var AppRestartCommand = &cobra.Command{
Use: i18n.G("restart <domain> [[service] | --all-services] [flags]"),
Aliases: []string{i18n.G("re")},
// translators: Short description for `app restart` command
Short: i18n.G("Restart an app"),
Short: i18n.G("Restart an app"),
Long: i18n.G(`This command restarts services within a deployed app.
Run "abra app ps <domain>" to see a list of service names.

View File

@ -17,7 +17,7 @@ var AppRestoreCommand = &cobra.Command{
Use: i18n.G("restore <domain> [flags]"),
Aliases: []string{i18n.G("rs")},
// translators: Short description for `app restore` command
Short: i18n.G("Restore a snapshot"),
Short: i18n.G("Restore a snapshot"),
Long: i18n.G(`Snapshots are restored while apps are deployed.
Some restore scenarios may require service / app restarts.`),

View File

@ -26,7 +26,7 @@ var AppRollbackCommand = &cobra.Command{
Use: i18n.G("rollback <domain> [version] [flags]"),
Aliases: []string{i18n.G("rl")},
// translators: Short description for `app rollback` command
Short: i18n.G("Roll an app back to a previous version"),
Short: i18n.G("Roll an app back to a previous version"),
Long: i18n.G(`This command rolls an app back to a previous version.
Unlike "abra app deploy", chaos operations are not supported here. Only recipe

View File

@ -22,7 +22,7 @@ var AppRunCommand = &cobra.Command{
Use: i18n.G("run <domain> <service> <cmd> [[args] [flags] | [flags] -- [args]]"),
Aliases: []string{i18n.G("r")},
// translators: Short description for `app run` command
Short: i18n.G("Run a command inside a service container"),
Short: i18n.G("Run a command inside a service container"),
Example: i18n.G(` # run <cmd> with args/flags
abra app run 1312.net app -- ls -lha

View File

@ -29,8 +29,8 @@ var AppSecretGenerateCommand = &cobra.Command{
Use: i18n.G("generate <domain> [[secret] [version] | --all] [flags]"),
Aliases: []string{i18n.G("g")},
// translators: Short description for `app secret generate` command
Short: i18n.G("Generate secrets"),
Args: cobra.RangeArgs(1, 3),
Short: i18n.G("Generate secrets"),
Args: cobra.RangeArgs(1, 3),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
@ -151,7 +151,7 @@ var AppSecretInsertCommand = &cobra.Command{
Use: i18n.G("insert <domain> <secret> <version> [<data>] [flags]"),
Aliases: []string{i18n.G("i")},
// translators: Short description for `app secret insert` command
Short: i18n.G("Insert secret"),
Short: i18n.G("Insert secret"),
Long: i18n.G(`This command inserts a secret into an app environment.
Arbitrary secret insertion is not supported. Secrets that are inserted must
@ -326,7 +326,7 @@ var AppSecretRmCommand = &cobra.Command{
Use: i18n.G("remove <domain> [[secret] | --all] [flags]"),
Aliases: []string{i18n.G("rm")},
// translators: Short description for `app secret remove` command
Short: i18n.G("Remove a secret"),
Short: i18n.G("Remove a secret"),
Long: i18n.G(`This command removes a secret from an app environment.
Arbitrary secret removal is not supported. Secrets that are removed must
@ -441,8 +441,8 @@ var AppSecretLsCommand = &cobra.Command{
Use: i18n.G("list <domain>"),
Aliases: []string{i18n.G("ls")},
// translators: Short description for `app secret list` command
Short: i18n.G("List all secrets"),
Args: cobra.MinimumNArgs(1),
Short: i18n.G("List all secrets"),
Args: cobra.MinimumNArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
@ -518,7 +518,7 @@ var AppSecretCommand = &cobra.Command{
Use: i18n.G("secret [cmd] [args] [flags]"),
Aliases: []string{i18n.G("s")},
// translators: Short description for `app secret` command group
Short: i18n.G("Manage app secrets"),
Short: i18n.G("Manage app secrets"),
}
var (

View File

@ -22,8 +22,8 @@ var AppServicesCommand = &cobra.Command{
Use: i18n.G("services <domain> [flags]"),
Aliases: []string{i18n.G("sr")},
// translators: Short description for `app services` command
Short: i18n.G("Display all services of an app"),
Args: cobra.ExactArgs(1),
Short: i18n.G("Display all services of an app"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

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

View File

@ -30,7 +30,7 @@ var AppUpgradeCommand = &cobra.Command{
Use: i18n.G("upgrade <domain> [version] [flags]"),
Aliases: []string{i18n.G("up")},
// translators: Short description for `app upgrade` command
Short: i18n.G("Upgrade an app"),
Short: i18n.G("Upgrade an app"),
Long: i18n.G(`Upgrade an app.
Unlike "abra app deploy", chaos operations are not supported here. Only recipe

View File

@ -20,8 +20,8 @@ var AppVolumeListCommand = &cobra.Command{
Use: i18n.G("list <domain> [flags]"),
Aliases: []string{i18n.G("ls")},
// translators: Short description for `app list` command
Short: i18n.G("List volumes associated with an app"),
Args: cobra.ExactArgs(1),
Short: i18n.G("List volumes associated with an app"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,
@ -76,7 +76,7 @@ var AppVolumeListCommand = &cobra.Command{
var AppVolumeRemoveCommand = &cobra.Command{
// translators: `app volume remove` command
Use: i18n.G("remove <domain> [volume] [flags]"),
Use: i18n.G("remove <domain> [volume] [flags]"),
// translators: Short description for `app volume remove` command
Short: i18n.G("Remove volume(s) associated with an app"),
Long: i18n.G(`Remove volumes associated with an app.

View File

@ -26,8 +26,8 @@ var CatalogueSyncCommand = &cobra.Command{
Use: i18n.G("sync [flags]"),
Aliases: []string{i18n.G("g")},
// translators: Short description for `catalogue sync` command
Short: i18n.G("Sync recipe catalogue for latest changes"),
Args: cobra.NoArgs,
Short: i18n.G("Sync recipe catalogue for latest changes"),
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
if err := catalogue.EnsureCatalogue(); err != nil {
log.Fatal(err)
@ -46,7 +46,7 @@ var CatalogueGenerateCommand = &cobra.Command{
Use: i18n.G("generate [recipe] [flags]"),
Aliases: []string{i18n.G("g")},
// translators: Short description for `catalogue generate` command
Short: i18n.G("Generate the recipe catalogue"),
Short: i18n.G("Generate the recipe catalogue"),
Long: i18n.G(`Generate a new copy of the recipe catalogue.
N.B. this command **will** wipe local unstaged changes from your local recipes
@ -267,7 +267,7 @@ your private key and enter your passphrase beforehand.
// CatalogueCommand defines the `abra catalogue` command and sub-commands.
var CatalogueCommand = &cobra.Command{
// translators: `catalogue` command group
Use: i18n.G("catalogue [cmd] [args] [flags]"),
Use: i18n.G("catalogue [cmd] [args] [flags]"),
// translators: Short description for `catalogue` command group
Short: i18n.G("Manage the recipe catalogue"),
Aliases: []string{"c"},

View File

@ -9,7 +9,7 @@ import (
var AutocompleteCommand = &cobra.Command{
// translators: `autocomplete` command
Use: i18n.G("autocomplete [bash|zsh|fish|powershell]"),
Use: i18n.G("autocomplete [bash|zsh|fish|powershell]"),
// translators: Short description for `autocomplete` command
Short: i18n.G("Generate autocompletion script"),
Long: i18n.G(`To load completions:

View File

@ -14,9 +14,9 @@ var RecipeDiffCommand = &cobra.Command{
Use: i18n.G("diff <recipe> [flags]"),
Aliases: []string{i18n.G("d")},
// translators: Short description for `recipe diff` command
Short: i18n.G("Show unstaged changes in recipe config"),
Long: i18n.G("This command requires /usr/bin/git."),
Args: cobra.MinimumNArgs(1),
Short: i18n.G("Show unstaged changes in recipe config"),
Long: i18n.G("This command requires /usr/bin/git."),
Args: cobra.MinimumNArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

@ -19,9 +19,9 @@ var RecipeFetchCommand = &cobra.Command{
Use: i18n.G("fetch [recipe | --all] [flags]"),
Aliases: []string{i18n.G("f")},
// translators: Short description for `recipe fetch` command
Short: i18n.G("Clone recipe(s) locally"),
Long: i18n.G(`Using "--force/-f" Git syncs an existing recipe. It does not erase unstaged changes.`),
Args: cobra.RangeArgs(0, 1),
Short: i18n.G("Clone recipe(s) locally"),
Long: i18n.G(`Using "--force/-f" Git syncs an existing recipe. It does not erase unstaged changes.`),
Args: cobra.RangeArgs(0, 1),
Example: i18n.G(` # fetch from recipe catalogue
abra recipe fetch gitea

View File

@ -12,7 +12,7 @@ import (
var RecipeLintCommand = &cobra.Command{
// translators: `recipe lint` command
Use: i18n.G("lint <recipe> [flags]"),
Use: i18n.G("lint <recipe> [flags]"),
// translators: Short description for `recipe lint` command
Short: i18n.G("Lint a recipe"),
Aliases: []string{i18n.G("l")},

View File

@ -16,7 +16,7 @@ import (
var RecipeListCommand = &cobra.Command{
// translators: `recipe list` command
Use: i18n.G("list"),
Use: i18n.G("list"),
// translators: Short description for `recipe list` command
Short: i18n.G("List recipes"),
Aliases: []string{i18n.G("ls")},

View File

@ -11,7 +11,7 @@ var RecipeCommand = &cobra.Command{
Use: i18n.G("recipe [cmd] [args] [flags]"),
Aliases: []string{i18n.G("r")},
// translators: Short description for `recipe` command group
Short: i18n.G("Manage recipes"),
Short: i18n.G("Manage recipes"),
Long: i18n.G(`A recipe is a blueprint for an app.
It is a bunch of config files which describe how to deploy and maintain an app.

View File

@ -28,7 +28,7 @@ var RecipeReleaseCommand = &cobra.Command{
Use: i18n.G("release <recipe> [version] [flags]"),
Aliases: []string{i18n.G("rl")},
// translators: Short description for `recipe release` command
Short: i18n.G("Release a new recipe version"),
Short: i18n.G("Release a new recipe version"),
Long: i18n.G(`Create a new version of a recipe.
These versions are then published on the Co-op Cloud recipe catalogue. These

View File

@ -14,9 +14,9 @@ var RecipeResetCommand = &cobra.Command{
Use: i18n.G("reset <recipe> [flags]"),
Aliases: []string{i18n.G("rs")},
// translators: Short description for `recipe reset` command
Short: i18n.G("Remove all unstaged changes from recipe config"),
Long: i18n.G("WARNING: this will delete your changes. Be Careful."),
Args: cobra.ExactArgs(1),
Short: i18n.G("Remove all unstaged changes from recipe config"),
Long: i18n.G("WARNING: this will delete your changes. Be Careful."),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

@ -23,7 +23,7 @@ var RecipeSyncCommand = &cobra.Command{
Use: i18n.G("sync <recipe> [version] [flags]"),
Aliases: []string{i18n.G("s")},
// translators: Short description for `recipe sync` command
Short: i18n.G("Sync recipe version label"),
Short: i18n.G("Sync recipe version label"),
Long: i18n.G(`Generate labels for the main recipe service.
By convention, the service named "app" using the following format:

View File

@ -42,7 +42,7 @@ var RecipeUpgradeCommand = &cobra.Command{
Use: i18n.G("upgrade <recipe> [flags]"),
Aliases: []string{i18n.G("u")},
// translators: Short description for `recipe upgrade` command
Short: i18n.G("Upgrade recipe image tags"),
Short: i18n.G("Upgrade recipe image tags"),
Long: i18n.G(`Upgrade a given <recipe> configuration.
It will update the relevant compose file tags on the local file system.

View File

@ -18,8 +18,8 @@ var RecipeVersionCommand = &cobra.Command{
Use: i18n.G("versions <recipe> [flags]"),
Aliases: []string{i18n.G("v")},
// translators: Short description for `recipe versions` command
Short: i18n.G("List recipe versions"),
Args: cobra.ExactArgs(1),
Short: i18n.G("List recipe versions"),
Args: cobra.ExactArgs(1),
ValidArgsFunction: func(
cmd *cobra.Command,
args []string,

View File

@ -22,7 +22,7 @@ import (
func Run(version, commit string) {
rootCmd := &cobra.Command{
// translators: `abra` binary name
Use: i18n.G("abra [cmd] [args] [flags]"),
Use: i18n.G("abra [cmd] [args] [flags]"),
// translators: Short description for `abra` binary
Short: i18n.G("The Co-op Cloud command-line utility belt 🎩🐇"),
Version: fmt.Sprintf("%s-%s", version, commit[:7]),
@ -84,7 +84,7 @@ func Run(version, commit string) {
Use: i18n.G("man [flags]"),
Aliases: []string{"m"},
// translators: Short description for `man` command
Short: i18n.G("Generate manpage"),
Short: i18n.G("Generate manpage"),
Example: i18n.G(` # generate the man pages into /usr/local/share/man/man1
abra_path=$(which abra) # pass abra absolute path to sudo below
sudo $abra_path man

View File

@ -21,8 +21,8 @@ var ServerAddCommand = &cobra.Command{
// translators: `server add` command
Use: i18n.G("add [[server] | --local] [flags]"),
Aliases: []string{i18n.G("a")},
// translators: Short description for `server add` command
Short: i18n.G("Add a new server"),
// translators: Short description for `server add` command
Short: i18n.G("Add a new server"),
Long: i18n.G(`Add a new server to your configuration so that it can be managed by Abra.
Abra relies on the standard SSH command-line and ~/.ssh/config for client

View File

@ -18,9 +18,9 @@ var ServerListCommand = &cobra.Command{
// translators: `server list` command
Use: i18n.G("list [flags]"),
Aliases: []string{i18n.G("ls")},
// translators: Short description for `server list` command
Short: i18n.G("List managed servers"),
Args: cobra.NoArgs,
// translators: Short description for `server list` command
Short: i18n.G("List managed servers"),
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
dockerContextStore := contextPkg.NewDefaultDockerContextStore()
contexts, err := dockerContextStore.Store.List()

View File

@ -16,7 +16,7 @@ var ServerPruneCommand = &cobra.Command{
Use: i18n.G("prune <server> [flags]"),
Aliases: []string{i18n.G("p")},
// translators: Short description for `server prune` command
Short: i18n.G("Prune resources on a server"),
Short: i18n.G("Prune resources on a server"),
Long: i18n.G(`Prunes unused containers, networks, and dangling images.
Use "--volumes/-v" to remove volumes that are not associated with a deployed

View File

@ -18,7 +18,7 @@ var ServerRemoveCommand = &cobra.Command{
Use: i18n.G("remove <server> [flags]"),
Aliases: []string{i18n.G("rm")},
// translators: Short description for `server remove` command
Short: i18n.G("Remove a managed server"),
Short: i18n.G("Remove a managed server"),
Long: i18n.G(`Remove a managed server.
Abra will remove the internal bookkeeping ($ABRA_DIR/servers/...) and

View File

@ -11,5 +11,5 @@ var ServerCommand = &cobra.Command{
Use: i18n.G("server [cmd] [args] [flags]"),
Aliases: []string{i18n.G("s")},
// translators: Short description for `server` command group
Short: i18n.G("Manage servers"),
Short: i18n.G("Manage servers"),
}

View File

@ -36,7 +36,7 @@ var NotifyCommand = &cobra.Command{
Use: i18n.G("notify [flags]"),
Aliases: []string{i18n.G("n")},
// translators: Short description for `notify` command
Short: i18n.G("Check for available upgrades"),
Short: i18n.G("Check for available upgrades"),
Long: i18n.G(`Notify on new versions for deployed apps.
If a new patch/minor version is available, a notification is printed.
@ -77,7 +77,7 @@ var UpgradeCommand = &cobra.Command{
Use: i18n.G("upgrade [[stack] [recipe] | --all] [flags]"),
Aliases: []string{i18n.G("u")},
// translators: Short description for `app upgrade` command
Short: i18n.G("Upgrade apps"),
Short: i18n.G("Upgrade apps"),
Long: i18n.G(`Upgrade an app by specifying stack name and recipe.
Use "--all" to upgrade every deployed app.
@ -476,7 +476,7 @@ func newKadabraApp(version, commit string) *cobra.Command {
Use: i18n.G("kadabra [cmd] [flags]"),
Version: fmt.Sprintf("%s-%s", version, commit[:7]),
// translators: Short description for `kababra` binary
Short: i18n.G("The Co-op Cloud auto-updater 🤖 🚀"),
Short: i18n.G("The Co-op Cloud auto-updater 🤖 🚀"),
PersistentPreRun: func(cmd *cobra.Command, args []string) {
log.Logger.SetStyles(charmLog.DefaultStyles())
charmLog.SetDefault(log.Logger)

View File

@ -17,7 +17,7 @@ var UpgradeCommand = &cobra.Command{
Use: i18n.G("upgrade [flags]"),
Aliases: []string{"u"},
// translators: Short description for `upgrade` command
Short: i18n.G("Upgrade abra"),
Short: i18n.G("Upgrade abra"),
Long: i18n.G(`Upgrade abra in-place with the latest stable or release candidate.
By default, the latest stable release is downloaded.