Compare commits

...

7 Commits

Author SHA1 Message Date
c41df874d1 chore: update translation files
Some checks failed
continuous-integration/drone/push Build is failing
Updated by "Update PO files to match POT (msgmerge)" add-on in Weblate.

Translation: Co-op Cloud/abra
Translate-URL: https://translate.coopcloud.tech/projects/co-op-cloud/abra/
2025-12-21 15:39:13 +00:00
b721adbf9c chore: i18n
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-21 16:39:02 +01:00
42f9e6d458 return error instead of handling it inside getLatestVersion
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-19 06:50:35 -08:00
9e7bc31d4d avoiding #732 by checking for empty versions list for recipe sync
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-12-18 14:41:58 -08:00
b79c4f33b6 chore: update translation files
Some checks failed
continuous-integration/drone/push Build is failing
Updated by "Update PO files to match POT (msgmerge)" add-on in Weblate.

Translation: Co-op Cloud/abra
Translate-URL: https://translate.coopcloud.tech/projects/co-op-cloud/abra/
2025-12-14 15:02:41 +00:00
cc87d5b3da chore: remove reference to wizard mode from recipe upgrade cli docs
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-13 15:26:12 +11:00
8b5e3f3c78 chore: translation using Weblate (Spanish)
Currently translated at 9.5% (109 of 1140 strings)

Translation: Co-op Cloud/abra
Translate-URL: https://translate.coopcloud.tech/projects/co-op-cloud/abra/es/
2025-12-10 01:43:58 +00:00
6 changed files with 194 additions and 146 deletions

View File

@ -1,6 +1,7 @@
package recipe
import (
"errors"
"fmt"
"strconv"
"strings"
@ -19,6 +20,9 @@ import (
"github.com/spf13/cobra"
)
// Errors
var emptyVersionsInCatalogue = errors.New(i18n.G("catalogue versions list is unexpectedly empty"))
// translators: `abra recipe reset` aliases. use a comma separated list of
// aliases with no spaces in between
var recipeSyncAliases = i18n.G("s")
@ -121,20 +125,18 @@ likely to change.
log.Fatal(err)
}
versions, err := recipePkg.GetRecipeCatalogueVersions(recipe.Name, catl)
if err != nil {
log.Fatal(err)
}
changesTable, err := formatter.CreateTable()
if err != nil {
log.Fatal(err)
}
latestRelease := tags[len(tags)-1]
latestRecipeVersion, err := getLatestVersion(recipe, catl)
if err != nil && err != emptyVersionsInCatalogue {
log.Fatal(err)
}
changesTable.Headers(i18n.G("SERVICE"), latestRelease, i18n.G("PROPOSED CHANGES"))
latestRecipeVersion := versions[len(versions)-1]
allRecipeVersions := catl[recipe.Name].Versions
for _, recipeVersion := range allRecipeVersions {
if serviceVersions, ok := recipeVersion[latestRecipeVersion]; ok {
@ -298,3 +300,14 @@ func init() {
i18n.G("increase the patch part of the version"),
)
}
func getLatestVersion(recipe recipePkg.Recipe, catl recipePkg.RecipeCatalogue) (string, error) {
versions, err := recipePkg.GetRecipeCatalogueVersions(recipe.Name, catl)
if err != nil {
return "", err
}
if len(versions) > 0 {
return versions[len(versions)-1], nil
}
return "", emptyVersionsInCatalogue
}

33
cli/recipe/sync_test.go Normal file
View File

@ -0,0 +1,33 @@
package recipe
import (
"testing"
recipePkg "coopcloud.tech/abra/pkg/recipe"
"github.com/stretchr/testify/assert"
)
func TestGetLatestVersionReturnsErrorWhenVersionsIsEmpty(t *testing.T) {
recipe := recipePkg.Recipe{}
catalogue := recipePkg.RecipeCatalogue{}
_, err := getLatestVersion(recipe, catalogue)
assert.Equal(t, err, emptyVersionsInCatalogue)
}
func TestGetLatestVersionReturnsLastVersion(t *testing.T) {
recipe := recipePkg.Recipe{
Name: "test",
}
versions := []map[string]map[string]recipePkg.ServiceMeta{
make(map[string]map[string]recipePkg.ServiceMeta),
make(map[string]map[string]recipePkg.ServiceMeta),
}
versions[0]["0.0.3"] = make(map[string]recipePkg.ServiceMeta)
versions[1]["0.0.2"] = make(map[string]recipePkg.ServiceMeta)
catalogue := make(recipePkg.RecipeCatalogue)
catalogue["test"] = recipePkg.RecipeMeta{
Versions: versions,
}
version, _ := getLatestVersion(recipe, catalogue)
assert.Equal(t, version, "0.0.3")
}

View File

@ -57,9 +57,7 @@ is up to the end-user to decide.
The command is interactive and will show a select input which allows you to
make a seclection. Use the "?" key to see more help on navigating this
interface.
You may invoke this command in "wizard" mode and be prompted for input.`),
interface.`),
Args: cobra.RangeArgs(0, 1),
ValidArgsFunction: func(
cmd *cobra.Command,

View File

@ -7,7 +7,7 @@
msgid ""
msgstr "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: EMAIL\n"
"POT-Creation-Date: 2025-11-04 15:34+0100\n"
"POT-Creation-Date: 2025-12-21 16:38+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"
@ -219,7 +219,7 @@ msgstr ""
msgid "%s created (version: %s)"
msgstr ""
#: ./cli/recipe/release.go:161 ./cli/recipe/sync.go:260 ./cli/recipe/upgrade.go:336
#: ./cli/recipe/release.go:161 ./cli/recipe/sync.go:262 ./cli/recipe/upgrade.go:334
#, c-format
msgid "%s currently has these unstaged changes 👇"
msgstr ""
@ -379,7 +379,7 @@ msgstr ""
msgid "%s must first be deployed on %s before moving"
msgstr ""
#: ./cli/recipe/upgrade.go:151
#: ./cli/recipe/upgrade.go:149
#, c-format
msgid "%s not considered semver-like"
msgstr ""
@ -882,7 +882,7 @@ msgstr ""
msgid "Generate autocompletion script"
msgstr ""
#: ./cli/recipe/sync.go:32
#: ./cli/recipe/sync.go:36
msgid "Generate labels for the main recipe service.\n"
"\n"
"By convention, the service named \"app\" using the following format:\n"
@ -1111,7 +1111,7 @@ msgstr ""
msgid "ON SERVER"
msgstr ""
#: ./cli/recipe/sync.go:135
#: ./cli/recipe/sync.go:138
msgid "PROPOSED CHANGES"
msgstr ""
@ -1275,7 +1275,7 @@ msgstr ""
msgid "SERVER"
msgstr ""
#: ./cli/app/ps.go:185 ./cli/recipe/sync.go:135 ./cli/recipe/version.go:69 ./cli/recipe/version.go:110
#: ./cli/app/ps.go:185 ./cli/recipe/sync.go:138 ./cli/recipe/version.go:69 ./cli/recipe/version.go:110
msgid "SERVICE"
msgstr ""
@ -1342,7 +1342,7 @@ msgid "Sync recipe catalogue for latest changes"
msgstr ""
#. translators: Short description for `recipe sync` command
#: ./cli/recipe/sync.go:31
#: ./cli/recipe/sync.go:35
msgid "Sync recipe version label"
msgstr ""
@ -1500,9 +1500,7 @@ msgid "Upgrade a given <recipe> configuration.\n"
"\n"
"The command is interactive and will show a select input which allows you to\n"
"make a seclection. Use the \"?\" key to see more help on navigating this\n"
"interface.\n"
"\n"
"You may invoke this command in \"wizard\" mode and be prompted for input."
"interface."
msgstr ""
#. translators: Short description for `upgrade` command
@ -1603,7 +1601,7 @@ msgstr ""
msgid "[hijack] end of stdout"
msgstr ""
#: ./cli/recipe/sync.go:85
#: ./cli/recipe/sync.go:89
#, c-format
msgid "\n"
"The following options are two types of initial semantic version that you can\n"
@ -1696,7 +1694,7 @@ msgctxt "recipe fetch"
msgid "a"
msgstr ""
#: ./cli/recipe/upgrade.go:384
#: ./cli/recipe/upgrade.go:382
msgctxt "recipe upgrade"
msgid "a"
msgstr ""
@ -1789,7 +1787,7 @@ msgstr ""
msgid "all-services"
msgstr ""
#: ./cli/recipe/upgrade.go:383
#: ./cli/recipe/upgrade.go:381
msgid "all-tags"
msgstr ""
@ -1932,7 +1930,7 @@ msgstr ""
msgid "can not insert from file and read from stdin"
msgstr ""
#: ./cli/recipe/upgrade.go:324
#: ./cli/recipe/upgrade.go:322
#, c-format
msgid "can upgrade service: %s, image: %s, tag: %s ::"
msgstr ""
@ -2049,6 +2047,10 @@ msgstr ""
msgid "catalogue successfully synced"
msgstr ""
#: ./cli/recipe/sync.go:24
msgid "catalogue versions list is unexpectedly empty"
msgstr ""
#: ./cli/recipe/list.go:44
msgid "category"
msgstr ""
@ -2084,7 +2086,7 @@ msgstr ""
msgid "choosing %s as latest version of %s"
msgstr ""
#: ./cli/recipe/sync.go:237
#: ./cli/recipe/sync.go:239
#, c-format
msgid "choosing %s as new version for %s"
msgstr ""
@ -2237,7 +2239,7 @@ msgstr ""
msgid "context lacks Docker endpoint"
msgstr ""
#: ./cli/recipe/sync.go:246 ./pkg/recipe/compose.go:229
#: ./cli/recipe/sync.go:248 ./pkg/recipe/compose.go:229
#, c-format
msgid "coop-cloud.${STACK_NAME}.version=%s"
msgstr ""
@ -2445,12 +2447,12 @@ msgstr ""
msgid "detected ABRA_CI=1"
msgstr ""
#: ./cli/recipe/upgrade.go:205
#: ./cli/recipe/upgrade.go:203
#, c-format
msgid "detected compatible upgradable tags %s for %s"
msgstr ""
#: ./cli/recipe/upgrade.go:178
#: ./cli/recipe/upgrade.go:176
#, c-format
msgid "detected potential upgradable tags %s for %s"
msgstr ""
@ -2464,7 +2466,7 @@ msgstr ""
msgid "did not detect any command arguments"
msgstr ""
#: ./cli/recipe/upgrade.go:125
#: ./cli/recipe/upgrade.go:123
#, c-format
msgid "did not find versions file for %s"
msgstr ""
@ -2582,7 +2584,7 @@ msgstr ""
msgid "dry run: no git tag created (%s)"
msgstr ""
#: ./cli/recipe/sync.go:252
#: ./cli/recipe/sync.go:254
#, c-format
msgid "dry run: not syncing label %s for recipe %s"
msgstr ""
@ -2592,7 +2594,7 @@ msgstr ""
msgid "dry run: remote %s (%s) not created"
msgstr ""
#: ./cli/app/move.go:349 ./cli/catalogue/catalogue.go:301 ./cli/recipe/release.go:648 ./cli/recipe/sync.go:271
#: ./cli/app/move.go:349 ./cli/catalogue/catalogue.go:301 ./cli/recipe/release.go:648 ./cli/recipe/sync.go:273
msgid "dry-run"
msgstr ""
@ -2643,7 +2645,7 @@ msgstr ""
msgid "ensuring env version %s"
msgstr ""
#: ./cli/recipe/upgrade.go:286
#: ./cli/recipe/upgrade.go:284
msgid "enter / return to confirm, choose 'skip' to not upgrade this tag, vim mode is enabled"
msgstr ""
@ -2965,7 +2967,7 @@ msgstr ""
msgid "force re-fetch"
msgstr ""
#: ./cli/recipe/upgrade.go:97
#: ./cli/recipe/upgrade.go:95
#, c-format
msgid "found versions file for %s"
msgstr ""
@ -3260,15 +3262,15 @@ msgstr ""
msgid "including VOLUMES=%v in backupbot exec invocation"
msgstr ""
#: ./cli/recipe/release.go:659 ./cli/recipe/sync.go:282 ./cli/recipe/upgrade.go:354
#: ./cli/recipe/release.go:659 ./cli/recipe/sync.go:284 ./cli/recipe/upgrade.go:352
msgid "increase the major part of the version"
msgstr ""
#: ./cli/recipe/release.go:667 ./cli/recipe/sync.go:290 ./cli/recipe/upgrade.go:362
#: ./cli/recipe/release.go:667 ./cli/recipe/sync.go:292 ./cli/recipe/upgrade.go:360
msgid "increase the minor part of the version"
msgstr ""
#: ./cli/recipe/release.go:675 ./cli/recipe/sync.go:298 ./cli/recipe/upgrade.go:370
#: ./cli/recipe/release.go:675 ./cli/recipe/sync.go:300 ./cli/recipe/upgrade.go:368
msgid "increase the patch part of the version"
msgstr ""
@ -3360,7 +3362,7 @@ msgstr ""
msgid "invalid tmpfs source, source must be empty"
msgstr ""
#: ./cli/recipe/sync.go:242
#: ./cli/recipe/sync.go:244
#, c-format
msgid "invalid version %s specified"
msgstr ""
@ -3438,7 +3440,7 @@ msgstr ""
msgid "list [flags]"
msgstr ""
#: ./cli/recipe/upgrade.go:386
#: ./cli/recipe/upgrade.go:384
msgid "list all tags, not just upgrades"
msgstr ""
@ -3508,11 +3510,11 @@ msgstr ""
#. with no spaces in between
#. translators: `abra man` aliases. use a comma separated list of aliases
#. with no spaces in between
#: ./cli/app/list.go:315 ./cli/app/move.go:34 ./cli/app/ps.go:205 ./cli/app/secret.go:553 ./cli/app/secret.go:649 ./cli/recipe/list.go:104 ./cli/recipe/upgrade.go:376 ./cli/recipe/version.go:139 ./cli/run.go:152 ./cli/server/list.go:106
#: ./cli/app/list.go:315 ./cli/app/move.go:34 ./cli/app/ps.go:205 ./cli/app/secret.go:553 ./cli/app/secret.go:649 ./cli/recipe/list.go:104 ./cli/recipe/upgrade.go:374 ./cli/recipe/version.go:139 ./cli/run.go:152 ./cli/server/list.go:106
msgid "m"
msgstr ""
#: ./cli/app/list.go:314 ./cli/app/ps.go:204 ./cli/app/secret.go:552 ./cli/app/secret.go:648 ./cli/recipe/list.go:103 ./cli/recipe/upgrade.go:375 ./cli/recipe/version.go:138 ./cli/server/list.go:105
#: ./cli/app/list.go:314 ./cli/app/ps.go:204 ./cli/app/secret.go:552 ./cli/app/secret.go:648 ./cli/recipe/list.go:103 ./cli/recipe/upgrade.go:373 ./cli/recipe/version.go:138 ./cli/server/list.go:105
msgid "machine"
msgstr ""
@ -3521,11 +3523,11 @@ msgstr ""
msgid "main app service version for %s is empty?"
msgstr ""
#: ./cli/internal/recipe.go:48 ./cli/internal/recipe.go:66 ./cli/internal/recipe.go:80 ./cli/recipe/release.go:656 ./cli/recipe/sync.go:279 ./cli/recipe/upgrade.go:351
#: ./cli/internal/recipe.go:48 ./cli/internal/recipe.go:66 ./cli/internal/recipe.go:80 ./cli/recipe/release.go:656 ./cli/recipe/sync.go:281 ./cli/recipe/upgrade.go:349
msgid "major"
msgstr ""
#: ./cli/recipe/upgrade.go:107
#: ./cli/recipe/upgrade.go:105
#, c-format
msgid "malformed version pin specification: %s"
msgstr ""
@ -3550,7 +3552,7 @@ msgstr ""
msgid "migrating app config from %s to %s"
msgstr ""
#: ./cli/internal/recipe.go:48 ./cli/internal/recipe.go:68 ./cli/internal/recipe.go:82 ./cli/recipe/release.go:664 ./cli/recipe/sync.go:287 ./cli/recipe/upgrade.go:359
#: ./cli/internal/recipe.go:48 ./cli/internal/recipe.go:68 ./cli/internal/recipe.go:82 ./cli/recipe/release.go:664 ./cli/recipe/sync.go:289 ./cli/recipe/upgrade.go:357
msgid "minor"
msgstr ""
@ -3734,12 +3736,12 @@ msgstr ""
msgid "no existing label found, automagic insertion not supported yet"
msgstr ""
#: ./cli/recipe/sync.go:81
#: ./cli/recipe/sync.go:85
#, c-format
msgid "no git tags found for %s"
msgstr ""
#: ./cli/recipe/upgrade.go:183
#: ./cli/recipe/upgrade.go:181
#, c-format
msgid "no new versions available for %s, assuming %s is the latest (use -a/--all-tags to see all anyway)"
msgstr ""
@ -3867,12 +3869,12 @@ msgstr ""
msgid "not requesting a remote TTY"
msgstr ""
#: ./cli/recipe/upgrade.go:306
#: ./cli/recipe/upgrade.go:304
#, c-format
msgid "not upgrading %s, skipping as requested"
msgstr ""
#: ./cli/recipe/upgrade.go:245
#: ./cli/recipe/upgrade.go:243
#, c-format
msgid "not upgrading from %s to %s for %s, because the upgrade type is more serious than what user wants"
msgstr ""
@ -3918,7 +3920,7 @@ msgstr ""
msgid "p"
msgstr ""
#: ./cli/recipe/upgrade.go:164
#: ./cli/recipe/upgrade.go:162
#, c-format
msgid "parsed %s for %s"
msgstr ""
@ -3961,7 +3963,7 @@ msgstr ""
msgid "pass command not found on $PATH, is it installed?"
msgstr ""
#: ./cli/internal/recipe.go:48 ./cli/internal/recipe.go:70 ./cli/internal/recipe.go:84 ./cli/recipe/release.go:672 ./cli/recipe/sync.go:295 ./cli/recipe/upgrade.go:367
#: ./cli/internal/recipe.go:48 ./cli/internal/recipe.go:70 ./cli/internal/recipe.go:84 ./cli/recipe/release.go:672 ./cli/recipe/sync.go:297 ./cli/recipe/upgrade.go:365
msgid "patch"
msgstr ""
@ -4024,7 +4026,7 @@ msgstr ""
msgid "previous git tags detected, assuming new semver release"
msgstr ""
#: ./cli/app/list.go:317 ./cli/app/ps.go:207 ./cli/app/secret.go:555 ./cli/app/secret.go:651 ./cli/recipe/list.go:106 ./cli/recipe/upgrade.go:378 ./cli/recipe/version.go:141 ./cli/server/list.go:108
#: ./cli/app/list.go:317 ./cli/app/ps.go:207 ./cli/app/secret.go:555 ./cli/app/secret.go:651 ./cli/recipe/list.go:106 ./cli/recipe/upgrade.go:376 ./cli/recipe/version.go:141 ./cli/server/list.go:108
msgid "print machine-readable output"
msgstr ""
@ -4094,7 +4096,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:486 ./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:486 ./cli/catalogue/catalogue.go:302 ./cli/recipe/recipe.go:12 ./cli/recipe/release.go:649 ./cli/recipe/sync.go:274
msgid "r"
msgstr ""
@ -4346,7 +4348,7 @@ msgstr ""
msgid "repo set config: %s"
msgstr ""
#: ./cli/app/move.go:352 ./cli/catalogue/catalogue.go:304 ./cli/recipe/release.go:651 ./cli/recipe/sync.go:274
#: ./cli/app/move.go:352 ./cli/catalogue/catalogue.go:304 ./cli/recipe/release.go:651 ./cli/recipe/sync.go:276
msgid "report changes that would be made"
msgstr ""
@ -4417,7 +4419,7 @@ msgstr ""
msgid "retrieved %s for %s"
msgstr ""
#: ./cli/recipe/upgrade.go:145
#: ./cli/recipe/upgrade.go:143
#, c-format
msgid "retrieved %s from remote registry for %s"
msgstr ""
@ -4557,7 +4559,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/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:28 ./cli/server/server.go:12
msgid "s"
msgstr ""
@ -4686,12 +4688,12 @@ msgstr ""
msgid "serverAdd: cleanUp: unable to list files in %s: %s"
msgstr ""
#: ./cli/recipe/upgrade.go:228
#: ./cli/recipe/upgrade.go:226
#, c-format
msgid "service %s is at version %s, but pinned to %s, please correct your compose.yml file manually!"
msgstr ""
#: ./cli/recipe/upgrade.go:224
#: ./cli/recipe/upgrade.go:222
#, c-format
msgid "service %s, image %s pinned to %s, no compatible upgrade found"
msgstr ""
@ -4951,7 +4953,7 @@ msgid "swarm mode not enabled on local server?"
msgstr ""
#. translators: `recipe sync` command
#: ./cli/recipe/sync.go:28
#: ./cli/recipe/sync.go:32
msgid "sync <recipe> [version] [flags]"
msgstr ""
@ -4973,12 +4975,12 @@ msgstr ""
msgid "tag all images with stable tags"
msgstr ""
#: ./cli/recipe/sync.go:178
#: ./cli/recipe/sync.go:180
#, c-format
msgid "tag at commit %s is unannotated or otherwise broken"
msgstr ""
#: ./cli/recipe/upgrade.go:302
#: ./cli/recipe/upgrade.go:300
#, c-format
msgid "tag upgraded from %s to %s for %s"
msgstr ""
@ -5116,7 +5118,7 @@ msgstr ""
msgid "unable to connect to %s, please check your SSH config"
msgstr ""
#: ./cli/recipe/sync.go:83
#: ./cli/recipe/sync.go:87
msgid "unable to continue, input required for initial version"
msgstr ""
@ -5155,7 +5157,7 @@ msgstr ""
msgid "unable to determine server of app %s, please pass --server/-s"
msgstr ""
#: ./cli/recipe/upgrade.go:253
#: ./cli/recipe/upgrade.go:251
#, c-format
msgid "unable to determine versioning semantics of %s, listing all tags"
msgstr ""
@ -5229,7 +5231,7 @@ msgstr ""
msgid "unable to open worktree of %s: %s"
msgstr ""
#: ./cli/recipe/upgrade.go:160
#: ./cli/recipe/upgrade.go:158
#, c-format
msgid "unable to parse %s, error was: %s, skipping upgrade for %s"
msgstr ""
@ -5269,7 +5271,7 @@ msgstr ""
msgid "unable to read remotes in %s: %s"
msgstr ""
#: ./cli/recipe/upgrade.go:154
#: ./cli/recipe/upgrade.go:152
#, c-format
msgid "unable to read tag for image %s, is it missing? skipping upgrade for %s"
msgstr ""
@ -5486,17 +5488,17 @@ msgstr ""
msgid "upgrade [flags]"
msgstr ""
#: ./cli/recipe/upgrade.go:249
#: ./cli/recipe/upgrade.go:247
#, c-format
msgid "upgrade to which tag? (service: %s, image: %s, tag: %s)"
msgstr ""
#: ./cli/recipe/upgrade.go:255
#: ./cli/recipe/upgrade.go:253
#, c-format
msgid "upgrade to which tag? (service: %s, tag: %s)"
msgstr ""
#: ./cli/recipe/upgrade.go:222
#: ./cli/recipe/upgrade.go:220
#, c-format
msgid "upgrading service %s from %s to %s (pinned tag: %s)"
msgstr ""
@ -5727,7 +5729,7 @@ msgstr ""
msgid "which service are you looking for?"
msgstr ""
#: ./cli/recipe/sync.go:105
#: ./cli/recipe/sync.go:109
msgid "which version do you want to begin with?"
msgstr ""
@ -5749,11 +5751,11 @@ msgstr ""
msgid "writing recipe version failed: %s"
msgstr ""
#: ./cli/recipe/release.go:657 ./cli/recipe/sync.go:280 ./cli/recipe/upgrade.go:352
#: ./cli/recipe/release.go:657 ./cli/recipe/sync.go:282 ./cli/recipe/upgrade.go:350
msgid "x"
msgstr ""
#: ./cli/recipe/release.go:665 ./cli/recipe/sync.go:288 ./cli/recipe/upgrade.go:360
#: ./cli/recipe/release.go:665 ./cli/recipe/sync.go:290 ./cli/recipe/upgrade.go:358
msgid "y"
msgstr ""
@ -5761,15 +5763,15 @@ msgstr ""
msgid "you can only use one of: --major, --minor, --patch"
msgstr ""
#: ./cli/recipe/upgrade.go:81
#: ./cli/recipe/upgrade.go:79
msgid "you can only use one of: --major, --minor, --patch."
msgstr ""
#: ./cli/recipe/sync.go:203
#: ./cli/recipe/sync.go:205
msgid "you can only use one version flag: --major, --minor or --patch"
msgstr ""
#: ./cli/recipe/release.go:673 ./cli/recipe/sync.go:296 ./cli/recipe/upgrade.go:368
#: ./cli/recipe/release.go:673 ./cli/recipe/sync.go:298 ./cli/recipe/upgrade.go:366
msgid "z"
msgstr ""

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: EMAIL\n"
"POT-Creation-Date: 2025-11-04 15:34+0100\n"
"PO-Revision-Date: 2025-09-04 08:14+0000\n"
"POT-Creation-Date: 2025-12-21 16:38+0100\n"
"PO-Revision-Date: 2025-12-10 01:43+0000\n"
"Last-Translator: chasqui <chasqui@cryptolab.net>\n"
"Language-Team: Spanish <https://translate.coopcloud.tech/projects/co-op-cloud/abra/es/>\n"
"Language: es\n"
@ -230,7 +230,7 @@ msgstr ""
msgid "%s created (version: %s)"
msgstr ""
#: cli/recipe/release.go:161 cli/recipe/sync.go:260 cli/recipe/upgrade.go:336
#: cli/recipe/release.go:161 cli/recipe/sync.go:262 cli/recipe/upgrade.go:334
#, c-format
msgid "%s currently has these unstaged changes 👇"
msgstr ""
@ -392,7 +392,7 @@ msgstr ""
msgid "%s must first be deployed on %s before moving"
msgstr ""
#: cli/recipe/upgrade.go:151
#: cli/recipe/upgrade.go:149
#, c-format
msgid "%s not considered semver-like"
msgstr ""
@ -910,7 +910,7 @@ msgstr ""
msgid "Generate autocompletion script"
msgstr "🤖 Genera un script de autocompletado"
#: cli/recipe/sync.go:32
#: cli/recipe/sync.go:36
msgid ""
"Generate labels for the main recipe service.\n"
"\n"
@ -1144,7 +1144,7 @@ msgstr ""
msgid "ON SERVER"
msgstr ""
#: cli/recipe/sync.go:135
#: cli/recipe/sync.go:138
msgid "PROPOSED CHANGES"
msgstr ""
@ -1272,12 +1272,12 @@ msgstr "▶️ Restaurar una captura o instantánea 📸"
#. translators: Short description for `app rollback` command
#: cli/app/rollback.go:34
msgid "Roll an app back to a previous version"
msgstr "⏪ Revertir una plataforma 🚀 una versión anterior"
msgstr "⏪ Revertir una aplicación 🚀 una versión anterior"
#. translators: Short description for `app run` command
#: cli/app/run.go:30
msgid "Run a command inside a service container"
msgstr "💻 Ejecuta un comando dentro de un contenedor 🐋 creado solo para esa tarea"
msgstr "💻 Crea una instancia temporal de un contenedor 🐋 para ejecutar el comando especificado"
#: cli/app/cmd.go:31
msgid ""
@ -1296,7 +1296,7 @@ msgstr ""
#. translators: Short description for `app cmd` command
#: cli/app/cmd.go:30
msgid "Run app commands"
msgstr "💻 Ejecutar comandos en una plataforma 🚀"
msgstr "💻 Ejecutar comandos en una aplicación 🚀"
#: cli/app/backup.go:303 cli/app/list.go:292 cli/app/logs.go:109
#: cli/app/new.go:389
@ -1315,7 +1315,7 @@ msgstr ""
msgid "SERVER"
msgstr ""
#: cli/app/ps.go:185 cli/recipe/sync.go:135 cli/recipe/version.go:69
#: cli/app/ps.go:185 cli/recipe/sync.go:138 cli/recipe/version.go:69
#: cli/recipe/version.go:110
msgid "SERVICE"
msgstr ""
@ -1384,7 +1384,7 @@ msgid "Sync recipe catalogue for latest changes"
msgstr "🔃 Sincronizar catálogo de recetas 🧑‍🍳"
#. translators: Short description for `recipe sync` command
#: cli/recipe/sync.go:31
#: cli/recipe/sync.go:35
msgid "Sync recipe version label"
msgstr "🔃 Sincronizar versión de la receta 🧑‍🍳"
@ -1399,7 +1399,7 @@ msgstr ""
#. translators: Short description for `app logs` command
#: cli/app/logs.go:27
msgid "Tail app logs"
msgstr "📋 Seguir logs 📈 de la plataforma 🚀"
msgstr "📋 Seguir logs 📈 de la aplicación 🚀"
#. translators: Short description for `abra` binary
#: cli/run.go:80
@ -1551,9 +1551,7 @@ msgid ""
"\n"
"The command is interactive and will show a select input which allows you to\n"
"make a seclection. Use the \"?\" key to see more help on navigating this\n"
"interface.\n"
"\n"
"You may invoke this command in \"wizard\" mode and be prompted for input."
"interface."
msgstr ""
#. translators: Short description for `upgrade` command
@ -1575,7 +1573,7 @@ msgstr ""
#. translators: Short description for `app upgrade` command
#: cli/app/upgrade.go:36
msgid "Upgrade an app"
msgstr "📨 Actualizar una plataforma 🚀"
msgstr "📨 Actualizar una aplicación 🚀"
#: cli/app/upgrade.go:37
msgid ""
@ -1658,7 +1656,7 @@ msgstr ""
msgid "[hijack] end of stdout"
msgstr ""
#: cli/recipe/sync.go:85
#: cli/recipe/sync.go:89
#, c-format
msgid ""
"\n"
@ -1754,7 +1752,7 @@ msgctxt "recipe fetch"
msgid "a"
msgstr ""
#: cli/recipe/upgrade.go:384
#: cli/recipe/upgrade.go:382
msgctxt "recipe upgrade"
msgid "a"
msgstr ""
@ -1848,7 +1846,7 @@ msgstr ""
msgid "all-services"
msgstr ""
#: cli/recipe/upgrade.go:383
#: cli/recipe/upgrade.go:381
msgid "all-tags"
msgstr ""
@ -1863,12 +1861,12 @@ msgstr ""
#. translators: `abra app` command for autocompletion
#: cli/run.go:91
msgid "app"
msgstr "plataforma"
msgstr "aplicacion"
#. translators: `app` command group
#: cli/app/app.go:16
msgid "app [cmd] [args] [flags]"
msgstr "plataforma [cmd] [args] [flags]"
msgstr "aplicacion [cmd] [args] [flags]"
#: pkg/dns/dns.go:52
#, c-format
@ -1998,7 +1996,7 @@ msgstr ""
msgid "can not insert from file and read from stdin"
msgstr ""
#: cli/recipe/upgrade.go:324
#: cli/recipe/upgrade.go:322
#, c-format
msgid "can upgrade service: %s, image: %s, tag: %s ::"
msgstr ""
@ -2116,6 +2114,10 @@ msgstr ""
msgid "catalogue successfully synced"
msgstr ""
#: cli/recipe/sync.go:24
msgid "catalogue versions list is unexpectedly empty"
msgstr ""
#: cli/recipe/list.go:44
msgid "category"
msgstr ""
@ -2156,7 +2158,7 @@ msgstr ""
msgid "choosing %s as latest version of %s"
msgstr ""
#: cli/recipe/sync.go:237
#: cli/recipe/sync.go:239
#, c-format
msgid "choosing %s as new version for %s"
msgstr ""
@ -2309,7 +2311,7 @@ msgstr ""
msgid "context lacks Docker endpoint"
msgstr ""
#: cli/recipe/sync.go:246 pkg/recipe/compose.go:229
#: cli/recipe/sync.go:248 pkg/recipe/compose.go:229
#, c-format
msgid "coop-cloud.${STACK_NAME}.version=%s"
msgstr ""
@ -2518,12 +2520,12 @@ msgstr ""
msgid "detected ABRA_CI=1"
msgstr ""
#: cli/recipe/upgrade.go:205
#: cli/recipe/upgrade.go:203
#, c-format
msgid "detected compatible upgradable tags %s for %s"
msgstr ""
#: cli/recipe/upgrade.go:178
#: cli/recipe/upgrade.go:176
#, c-format
msgid "detected potential upgradable tags %s for %s"
msgstr ""
@ -2537,7 +2539,7 @@ msgstr ""
msgid "did not detect any command arguments"
msgstr ""
#: cli/recipe/upgrade.go:125
#: cli/recipe/upgrade.go:123
#, c-format
msgid "did not find versions file for %s"
msgstr ""
@ -2655,7 +2657,7 @@ msgstr ""
msgid "dry run: no git tag created (%s)"
msgstr ""
#: cli/recipe/sync.go:252
#: cli/recipe/sync.go:254
#, c-format
msgid "dry run: not syncing label %s for recipe %s"
msgstr ""
@ -2666,7 +2668,7 @@ msgid "dry run: remote %s (%s) not created"
msgstr ""
#: cli/app/move.go:349 cli/catalogue/catalogue.go:301 cli/recipe/release.go:648
#: cli/recipe/sync.go:271
#: cli/recipe/sync.go:273
msgid "dry-run"
msgstr ""
@ -2717,7 +2719,7 @@ msgstr ""
msgid "ensuring env version %s"
msgstr ""
#: cli/recipe/upgrade.go:286
#: cli/recipe/upgrade.go:284
msgid "enter / return to confirm, choose 'skip' to not upgrade this tag, vim mode is enabled"
msgstr ""
@ -3046,7 +3048,7 @@ msgstr ""
msgid "force re-fetch"
msgstr ""
#: cli/recipe/upgrade.go:97
#: cli/recipe/upgrade.go:95
#, c-format
msgid "found versions file for %s"
msgstr ""
@ -3347,15 +3349,15 @@ msgstr ""
msgid "including VOLUMES=%v in backupbot exec invocation"
msgstr ""
#: cli/recipe/release.go:659 cli/recipe/sync.go:282 cli/recipe/upgrade.go:354
#: cli/recipe/release.go:659 cli/recipe/sync.go:284 cli/recipe/upgrade.go:352
msgid "increase the major part of the version"
msgstr ""
#: cli/recipe/release.go:667 cli/recipe/sync.go:290 cli/recipe/upgrade.go:362
#: cli/recipe/release.go:667 cli/recipe/sync.go:292 cli/recipe/upgrade.go:360
msgid "increase the minor part of the version"
msgstr ""
#: cli/recipe/release.go:675 cli/recipe/sync.go:298 cli/recipe/upgrade.go:370
#: cli/recipe/release.go:675 cli/recipe/sync.go:300 cli/recipe/upgrade.go:368
msgid "increase the patch part of the version"
msgstr ""
@ -3447,7 +3449,7 @@ msgstr ""
msgid "invalid tmpfs source, source must be empty"
msgstr ""
#: cli/recipe/sync.go:242
#: cli/recipe/sync.go:244
#, c-format
msgid "invalid version %s specified"
msgstr ""
@ -3527,7 +3529,7 @@ msgstr "listar <domain> [flags]"
msgid "list [flags]"
msgstr "listar [flags]"
#: cli/recipe/upgrade.go:386
#: cli/recipe/upgrade.go:384
msgid "list all tags, not just upgrades"
msgstr ""
@ -3601,13 +3603,13 @@ msgstr "plataformas"
#. with no spaces in between
#: cli/app/list.go:315 cli/app/move.go:34 cli/app/ps.go:205
#: cli/app/secret.go:553 cli/app/secret.go:649 cli/recipe/list.go:104
#: cli/recipe/upgrade.go:376 cli/recipe/version.go:139 cli/run.go:152
#: cli/recipe/upgrade.go:374 cli/recipe/version.go:139 cli/run.go:152
#: cli/server/list.go:106
msgid "m"
msgstr ""
#: cli/app/list.go:314 cli/app/ps.go:204 cli/app/secret.go:552
#: cli/app/secret.go:648 cli/recipe/list.go:103 cli/recipe/upgrade.go:375
#: cli/app/secret.go:648 cli/recipe/list.go:103 cli/recipe/upgrade.go:373
#: cli/recipe/version.go:138 cli/server/list.go:105
msgid "machine"
msgstr ""
@ -3618,12 +3620,12 @@ msgid "main app service version for %s is empty?"
msgstr ""
#: cli/internal/recipe.go:48 cli/internal/recipe.go:66
#: cli/internal/recipe.go:80 cli/recipe/release.go:656 cli/recipe/sync.go:279
#: cli/recipe/upgrade.go:351
#: cli/internal/recipe.go:80 cli/recipe/release.go:656 cli/recipe/sync.go:281
#: cli/recipe/upgrade.go:349
msgid "major"
msgstr ""
#: cli/recipe/upgrade.go:107
#: cli/recipe/upgrade.go:105
#, c-format
msgid "malformed version pin specification: %s"
msgstr ""
@ -3649,8 +3651,8 @@ msgid "migrating app config from %s to %s"
msgstr ""
#: cli/internal/recipe.go:48 cli/internal/recipe.go:68
#: cli/internal/recipe.go:82 cli/recipe/release.go:664 cli/recipe/sync.go:287
#: cli/recipe/upgrade.go:359
#: cli/internal/recipe.go:82 cli/recipe/release.go:664 cli/recipe/sync.go:289
#: cli/recipe/upgrade.go:357
msgid "minor"
msgstr ""
@ -3834,12 +3836,12 @@ msgstr ""
msgid "no existing label found, automagic insertion not supported yet"
msgstr ""
#: cli/recipe/sync.go:81
#: cli/recipe/sync.go:85
#, c-format
msgid "no git tags found for %s"
msgstr ""
#: cli/recipe/upgrade.go:183
#: cli/recipe/upgrade.go:181
#, c-format
msgid "no new versions available for %s, assuming %s is the latest (use -a/--all-tags to see all anyway)"
msgstr ""
@ -3967,12 +3969,12 @@ msgstr ""
msgid "not requesting a remote TTY"
msgstr ""
#: cli/recipe/upgrade.go:306
#: cli/recipe/upgrade.go:304
#, c-format
msgid "not upgrading %s, skipping as requested"
msgstr ""
#: cli/recipe/upgrade.go:245
#: cli/recipe/upgrade.go:243
#, c-format
msgid "not upgrading from %s to %s for %s, because the upgrade type is more serious than what user wants"
msgstr ""
@ -4021,7 +4023,7 @@ msgstr ""
msgid "p"
msgstr ""
#: cli/recipe/upgrade.go:164
#: cli/recipe/upgrade.go:162
#, c-format
msgid "parsed %s for %s"
msgstr ""
@ -4066,8 +4068,8 @@ msgid "pass command not found on $PATH, is it installed?"
msgstr ""
#: cli/internal/recipe.go:48 cli/internal/recipe.go:70
#: cli/internal/recipe.go:84 cli/recipe/release.go:672 cli/recipe/sync.go:295
#: cli/recipe/upgrade.go:367
#: cli/internal/recipe.go:84 cli/recipe/release.go:672 cli/recipe/sync.go:297
#: cli/recipe/upgrade.go:365
msgid "patch"
msgstr ""
@ -4133,7 +4135,7 @@ msgid "previous git tags detected, assuming new semver release"
msgstr ""
#: cli/app/list.go:317 cli/app/ps.go:207 cli/app/secret.go:555
#: cli/app/secret.go:651 cli/recipe/list.go:106 cli/recipe/upgrade.go:378
#: cli/app/secret.go:651 cli/recipe/list.go:106 cli/recipe/upgrade.go:376
#: cli/recipe/version.go:141 cli/server/list.go:108
msgid "print machine-readable output"
msgstr ""
@ -4207,7 +4209,7 @@ msgstr ""
#. 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:486 cli/catalogue/catalogue.go:302
#: cli/recipe/recipe.go:12 cli/recipe/release.go:649 cli/recipe/sync.go:272
#: cli/recipe/recipe.go:12 cli/recipe/release.go:649 cli/recipe/sync.go:274
msgid "r"
msgstr ""
@ -4462,7 +4464,7 @@ msgid "repo set config: %s"
msgstr ""
#: cli/app/move.go:352 cli/catalogue/catalogue.go:304 cli/recipe/release.go:651
#: cli/recipe/sync.go:274
#: cli/recipe/sync.go:276
msgid "report changes that would be made"
msgstr ""
@ -4533,7 +4535,7 @@ msgstr ""
msgid "retrieved %s for %s"
msgstr ""
#: cli/recipe/upgrade.go:145
#: cli/recipe/upgrade.go:143
#, c-format
msgid "retrieved %s from remote registry for %s"
msgstr ""
@ -4621,7 +4623,7 @@ msgstr ""
#. translators: `app run` command
#: cli/app/run.go:27
msgid "run <domain> <service> <cmd> [[args] [flags] | [flags] -- [args]]"
msgstr "lanzar <domain> <service> <cmd> [[args] [flags] | [flags] -- [args]]"
msgstr "correr <domain> <service> <cmd> [[args] [flags] | [flags] -- [args]]"
#: cli/app/run.go:120
msgid "run command as user"
@ -4678,7 +4680,7 @@ msgstr ""
#: 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/recipe/fetch.go:130 cli/recipe/sync.go:28 cli/server/server.go:12
msgid "s"
msgstr ""
@ -4809,12 +4811,12 @@ msgstr ""
msgid "serverAdd: cleanUp: unable to list files in %s: %s"
msgstr ""
#: cli/recipe/upgrade.go:228
#: cli/recipe/upgrade.go:226
#, c-format
msgid "service %s is at version %s, but pinned to %s, please correct your compose.yml file manually!"
msgstr ""
#: cli/recipe/upgrade.go:224
#: cli/recipe/upgrade.go:222
#, c-format
msgid "service %s, image %s pinned to %s, no compatible upgrade found"
msgstr ""
@ -5074,7 +5076,7 @@ msgid "swarm mode not enabled on local server?"
msgstr ""
#. translators: `recipe sync` command
#: cli/recipe/sync.go:28
#: cli/recipe/sync.go:32
msgid "sync <recipe> [version] [flags]"
msgstr "sincronizar <recipe> [version] [flags]"
@ -5097,12 +5099,12 @@ msgstr ""
msgid "tag all images with stable tags"
msgstr ""
#: cli/recipe/sync.go:178
#: cli/recipe/sync.go:180
#, c-format
msgid "tag at commit %s is unannotated or otherwise broken"
msgstr ""
#: cli/recipe/upgrade.go:302
#: cli/recipe/upgrade.go:300
#, c-format
msgid "tag upgraded from %s to %s for %s"
msgstr ""
@ -5241,7 +5243,7 @@ msgstr ""
msgid "unable to connect to %s, please check your SSH config"
msgstr ""
#: cli/recipe/sync.go:83
#: cli/recipe/sync.go:87
msgid "unable to continue, input required for initial version"
msgstr ""
@ -5280,7 +5282,7 @@ msgstr ""
msgid "unable to determine server of app %s, please pass --server/-s"
msgstr ""
#: cli/recipe/upgrade.go:253
#: cli/recipe/upgrade.go:251
#, c-format
msgid "unable to determine versioning semantics of %s, listing all tags"
msgstr ""
@ -5355,7 +5357,7 @@ msgstr ""
msgid "unable to open worktree of %s: %s"
msgstr ""
#: cli/recipe/upgrade.go:160
#: cli/recipe/upgrade.go:158
#, c-format
msgid "unable to parse %s, error was: %s, skipping upgrade for %s"
msgstr ""
@ -5395,7 +5397,7 @@ msgstr "🥷 Genera secretos (contraseñas) automáticamente 🤖"
msgid "unable to read remotes in %s: %s"
msgstr ""
#: cli/recipe/upgrade.go:154
#: cli/recipe/upgrade.go:152
#, c-format
msgid "unable to read tag for image %s, is it missing? skipping upgrade for %s"
msgstr ""
@ -5509,7 +5511,7 @@ msgstr ""
#. translators: `app undeploy` command
#: cli/app/undeploy.go:28
msgid "undeploy <domain> [flags]"
msgstr "desarmar <domain> [flags]"
msgstr "recoger <domain> [flags]"
#: cli/app/undeploy.go:117
msgid "undeploy succeeded 🟢"
@ -5616,17 +5618,17 @@ msgstr "actualizar <recipe> [flags]"
msgid "upgrade [flags]"
msgstr "actualizar [flags]"
#: cli/recipe/upgrade.go:249
#: cli/recipe/upgrade.go:247
#, c-format
msgid "upgrade to which tag? (service: %s, image: %s, tag: %s)"
msgstr ""
#: cli/recipe/upgrade.go:255
#: cli/recipe/upgrade.go:253
#, c-format
msgid "upgrade to which tag? (service: %s, tag: %s)"
msgstr ""
#: cli/recipe/upgrade.go:222
#: cli/recipe/upgrade.go:220
#, c-format
msgid "upgrading service %s from %s to %s (pinned tag: %s)"
msgstr ""
@ -5861,7 +5863,7 @@ msgstr ""
msgid "which service are you looking for?"
msgstr ""
#: cli/recipe/sync.go:105
#: cli/recipe/sync.go:109
msgid "which version do you want to begin with?"
msgstr ""
@ -5884,11 +5886,11 @@ msgstr ""
msgid "writing recipe version failed: %s"
msgstr ""
#: cli/recipe/release.go:657 cli/recipe/sync.go:280 cli/recipe/upgrade.go:352
#: cli/recipe/release.go:657 cli/recipe/sync.go:282 cli/recipe/upgrade.go:350
msgid "x"
msgstr ""
#: cli/recipe/release.go:665 cli/recipe/sync.go:288 cli/recipe/upgrade.go:360
#: cli/recipe/release.go:665 cli/recipe/sync.go:290 cli/recipe/upgrade.go:358
msgid "y"
msgstr ""
@ -5896,15 +5898,15 @@ msgstr ""
msgid "you can only use one of: --major, --minor, --patch"
msgstr ""
#: cli/recipe/upgrade.go:81
#: cli/recipe/upgrade.go:79
msgid "you can only use one of: --major, --minor, --patch."
msgstr ""
#: cli/recipe/sync.go:203
#: cli/recipe/sync.go:205
msgid "you can only use one version flag: --major, --minor or --patch"
msgstr ""
#: cli/recipe/release.go:673 cli/recipe/sync.go:296 cli/recipe/upgrade.go:368
#: cli/recipe/release.go:673 cli/recipe/sync.go:298 cli/recipe/upgrade.go:366
msgid "z"
msgstr ""