gplay metadata apply
Reconcile the local Metadata tree (--dir, default ./metadata) with the Store front Listings live on Google Play for --package.
By default the sync is ADDITIVE: it upserts only the locales and fields present on disk; a locale live on Play but absent locally is left intact and reported. Use --prune to also delete online-only locales (it refuses to remove the app's defaultLanguage). Note: a locale is "present on disk" only if its directory holds at least one recognized field file (title.txt, …) — a directory with only a README or unrecognized files is NOT seen as managed and, under --prune, would be deleted online. Preview with --dry-run first.
--dry-run reads the live Listings and prints the per-locale delta without committing (it is ONLINE — it diffs disk against Play). --output json is the gplay diff schema {package, changes[], summary}, so a CI gate is one jq line: jq -e '.summary.create + .summary.update > 0'.
A real apply requires --confirm (every committed Listing is live on the store immediately); without it apply refuses and points here. CI=true does NOT auto-confirm. The publish is atomic: all locales patch inside one Edit committed once, and any per-locale failure discards the Edit (0 published).
gplay metadata apply [flags]| Flag | Description |
|---|---|
--allow-locale stringArray | whitelist a locale code outside the embedded registry (repeatable) |
--confirm | authorize the real publish (Listings go live immediately) |
--dir string | metadata tree root directory (default "./metadata") |
--dry-run | read live Play and print the delta without committing (online) |
--output string | output format: table, json, or markdown (default: auto — table on TTY, json in pipes/CI) |
--package string | Android package name (overrides .gplay/config.json pin) |
--prune | also delete locales live on Play but absent on disk (refuses defaultLanguage) |
Global flags
Section titled “Global flags”| Flag | Description |
|---|---|
--account string | name of a stored Account to use (overrides env and active Account) |
--retry int | retry transient failures (transport errors, 5xx, 429) up to N times with exponential backoff (default: 0, no retry) |
--service-account string | path to a service-account JSON, or inline JSON content (overrides --account, env, and active Account) |
--timeout duration | per-request API timeout, e.g. 30s or 2m (default: 60s for control-plane calls, none for uploads) |
-v, --verbose | log flow steps to stderr (info level) |