Skip to content

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]
FlagDescription
--allow-locale stringArraywhitelist a locale code outside the embedded registry (repeatable)
--confirmauthorize the real publish (Listings go live immediately)
--dir stringmetadata tree root directory (default "./metadata")
--dry-runread live Play and print the delta without committing (online)
--output stringoutput format: table, json, or markdown (default: auto — table on TTY, json in pipes/CI)
--package stringAndroid package name (overrides .gplay/config.json pin)
--prunealso delete locales live on Play but absent on disk (refuses defaultLanguage)
FlagDescription
--account stringname of a stored Account to use (overrides env and active Account)
--retry intretry transient failures (transport errors, 5xx, 429) up to N times with exponential backoff (default: 0, no retry)
--service-account stringpath to a service-account JSON, or inline JSON content (overrides --account, env, and active Account)
--timeout durationper-request API timeout, e.g. 30s or 2m (default: 60s for control-plane calls, none for uploads)
-v, --verboselog flow steps to stderr (info level)