Skip to content

gplay metadata images apply

Reconcile the local Store-image tree (--dir, default ./metadata) with the images live on Google Play for --package.

The sync is ADDITIVE: it uploads images present on disk and reorders a gallery whose order changed, but an image live on Play yet absent from a managed slot is left intact (removing online-only images is --prune, a separate destructive mode). A slot absent or empty on disk is unmanaged and never touched.

--dry-run reads the live images and prints the per-slot delta without committing (it is ONLINE — it diffs disk against Play). --output json is the diff schema {package, slots[], summary}, so a CI gate is one jq line: jq -e '.summary.upload + .summary.delete + .summary.reorder > 0'.

A real apply requires --confirm (every committed image is live on the store immediately; there is no draft). Without it apply refuses and points here. CI=true does NOT auto-confirm. The publish is atomic: all slots reconcile inside one Edit committed once, and any per-slot failure discards the Edit (0 published).

metadata images validate runs as a fail-fast pre-check; --no-validate bypasses it (Play's commit stays the ultimate authority). --locale and --type restrict the reconciliation to a subset of slots.

gplay metadata images apply [flags]
FlagDescription
--confirmauthorize the real publish (images go live immediately)
--dir stringmetadata tree root directory (default "./metadata")
--dry-runread live Play and print the delta without committing (online)
--locale stringArrayrestrict to these locale codes (repeatable)
--no-validateskip the offline image validation pre-check (Play's commit stays the authority)
--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 a managed slot's online-only images (destructive; requires --confirm)
--type stringArrayrestrict to these image types (repeatable)
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)