Utility commands: doctor (diagnose setup), docs (open docs), version, cache, feedback, and shell completion.
gpc <doctor|docs|version|cache|feedback|completion> [options]Commands
| Command | Description |
|---|---|
doctor | Verify setup and connectivity |
docs | Open documentation in browser |
version --json | Print version and install info as JSON |
cache | Manage status, token, and update cache |
auth token | Print current access token |
feedback | Open a pre-filled GitHub issue |
completion bash | Generate bash completions |
completion zsh | Generate zsh completions |
completion fish | Generate fish completions |
changelog | Show release history from GitHub |
gpc doctor
Run diagnostic checks to verify your GPC setup end-to-end.
Synopsis
gpc doctor [--json]Options
| Flag | Description |
|---|---|
--json | Output results as machine-readable JSON |
Checks performed
| Check | What it verifies |
|---|---|
node | Node.js ≥ 20 |
config | Config file loads without errors |
default-app | A default package name is configured |
package-name | Package name matches Android naming rules |
config-dir | Config directory is readable and writable |
cache-dir | Cache directory is readable and writable |
service-account-file | SA key file exists and is readable (if configured) |
service-account-permissions | SA key file is not group/world-readable (Unix) |
profile | GPC_PROFILE env var points to a known profile |
proxy | Proxy URL is valid (if HTTPS_PROXY etc. are set) |
ca-cert | CA cert file exists (if GPC_CA_CERT is set) |
dns | Both API endpoints resolve: androidpublisher.googleapis.com and playdeveloperreporting.googleapis.com |
auth | Credentials load and authenticate successfully |
api-connectivity | Access token can be obtained from Google |
Example
gpc doctorAll checks passing:
GPC Doctor
✓ Node.js 22.12.0
✓ Configuration loaded
✓ Default app: com.example.myapp
✓ Package name format OK: com.example.myapp
✓ Config directory: /Users/you/.config/gpc
✓ Cache directory: /Users/you/.cache/gpc
✓ Service account file: /path/to/key.json
✓ Service account file permissions OK (mode: 600)
✓ DNS: androidpublisher.googleapis.com
✓ DNS: playdeveloperreporting.googleapis.com
✓ Authenticated as play-api@my-project.iam.gserviceaccount.com
✓ API connectivity verified
✓ 12 passed ⚠ 0 warnings ✗ 0 failed
All checks passed!2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
With failures:
GPC Doctor
✓ Node.js 22.12.0
✗ Configuration could not be loaded
Run gpc config init to create a config file, or check .gpcrc.json for syntax errors
✓ 1 passed ⚠ 0 warnings ✗ 1 failed
Some checks failed. Fix the issues above and run again.2
3
4
5
6
7
8
9
JSON output
gpc doctor --json{
"success": true,
"errors": 0,
"warnings": 0,
"checks": [
{ "name": "node", "status": "pass", "message": "Node.js 22.12.0" },
{ "name": "config", "status": "pass", "message": "Configuration loaded" }
]
}2
3
4
5
6
7
8
9
Exits 0 if all checks pass, 1 if any check fails.
gpc update
Update GPC to the latest version. Automatically detects your install method (npm, Homebrew, or standalone binary) and delegates to the appropriate update mechanism.
Synopsis
gpc update [--check] [--force] [--output json]Options
| Option | Description |
|---|---|
--check | Check for updates without installing. Exits 0 always — communicate update availability via output or --output json. |
--force | Update even if already on the latest version. |
--output json | Emit structured JSON instead of human-readable output. |
How it works
GPC detects the install method in priority order:
__GPC_BINARY=1env var (injected at compile time) → standalone binary in-place replacenpm_config_prefixenv var →npm install -g @gpc-cli/cli@latest- Resolved binary path contains
cellarorhomebrew→brew upgrade yasserstudio/tap/gpc - Resolved binary path contains
node_modules→ npm - Fallback → manual instructions with exit code 1
Binary installs download the platform asset, verify its SHA-256 checksum against checksums.txt from the release, then atomically replace the running binary.
Environment Variables
| Variable | Description |
|---|---|
GPC_GITHUB_TOKEN | GitHub personal access token. Raises the API rate limit from 60 to 5,000 requests/hour. Useful on shared CI runner IPs. |
Examples
# Check if an update is available (safe, no changes made)
gpc update --check
# Update to latest
gpc update
# Force reinstall even if already on latest
gpc update --force
# Check in CI — parse result as JSON
gpc update --check --output json | jq '.updateAvailable'2
3
4
5
6
7
8
9
10
11
Example output
Update available:
Update available: 0.9.31 → 0.9.32
Install method: homebrew
Release: https://github.com/yasserstudio/gpc/releases/tag/v0.9.32
Run: gpc update2
3
4
5
Already on latest:
Already on latest version: v0.9.32--output json (update available):
{
"current": "0.9.31",
"latest": "0.9.32",
"updateAvailable": true,
"installMethod": "homebrew",
"releaseUrl": "https://github.com/yasserstudio/gpc/releases/tag/v0.9.32"
}2
3
4
5
6
7
Exit codes
| Code | Meaning |
|---|---|
0 | Success — --check always exits 0 regardless of whether an update exists |
1 | Error — unknown install method, permission denied, checksum mismatch |
4 | GitHub API error (rate limited, HTTP error) |
5 | Network error (no connectivity) |
CI usage
Use --check --output json to gate on update availability without installing:
gpc update --check --output json | jq -e '.updateAvailable' && echo "Update required"jq -e exits 1 if the value is false/null, making it composable with &&.
gpc docs
Open the GPC documentation in your default browser. Optionally navigate directly to a specific topic page.
Synopsis
gpc docs [topic] [--list]Options
| Flag | Description |
|---|---|
[topic] | Topic name to open directly (see list below) |
--list | Print all available topics and exit |
Available Topics
| Topic | Opens |
|---|---|
releases | commands/releases |
status | commands/status |
vitals | commands/vitals |
reviews | commands/reviews |
listings | commands/listings |
subscriptions | commands/subscriptions |
bundle | commands/bundle |
users | commands/users |
audit | commands/audit |
config | commands/config |
doctor | commands/doctor |
publish | commands/publish |
Example
Open the docs home:
gpc docsOpen a specific topic:
gpc docs releases
gpc docs vitals2
List all available topics:
gpc docs --listAvailable topics:
gpc docs releases
gpc docs status
gpc docs vitals
...2
3
4
5
If an unknown topic is passed, the command exits code 2 with a suggestion to run gpc docs --list.
Opens https://yasserstudio.github.io/gpc/ (or the topic-specific page) in the default browser. If the browser cannot be opened, prints the URL to stdout.
gpc version
Print the current GPC version. Add --json to get structured output including install method and platform info.
Synopsis
gpc version [--json]Options
| Flag | Description |
|---|---|
--json | Output version info as machine-readable JSON |
Example
gpc version
# v0.9.32
gpc version --json2
3
4
{
"version": "0.9.32",
"installMethod": "homebrew",
"platform": "darwin-arm64",
"node": "22.12.0"
}2
3
4
5
6
gpc cache
Manage the local GPC cache. GPC caches app status snapshots, OAuth access tokens, and update-check results to reduce API calls and improve responsiveness.
Synopsis
gpc cache list
gpc cache clear [--type <status|token|update-check>]2
Subcommands
| Subcommand | Description |
|---|---|
list | Show all cached entries with type, age, and size |
clear | Clear all cache entries or a specific type |
Options
| Flag | Description |
|---|---|
--type <type> | Clear only entries of the given type: status, token, or update-check |
Examples
# List all cache entries
gpc cache list
# Clear everything
gpc cache clear
# Clear only the access token cache (forces re-auth on next command)
gpc cache clear --type token
# Clear only status snapshots
gpc cache clear --type status2
3
4
5
6
7
8
9
10
11
gpc auth token
Print the current Google API access token to stdout. Useful for scripting, debugging, or passing to other tools that call the Google Play API directly.
Synopsis
gpc auth tokenExample
gpc auth token
# ya29.a0ARrdaM...
# Use in a curl call
curl -H "Authorization: Bearer $(gpc auth token)" \
"https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.example.app/tracks"2
3
4
5
6
The token is fetched using your configured credentials (service account, OAuth, or ADC). It is cached for its remaining lifetime.
gpc feedback
Open a pre-filled GitHub issue in your default browser with system diagnostics attached. The issue template includes your GPC version, install method, platform, Node.js version, and the output of gpc doctor.
Synopsis
gpc feedbackExample
gpc feedback
# Opening GitHub issue in browser...
# https://github.com/yasserstudio/gpc/issues/new?...2
3
If the browser cannot be opened, the URL is printed to stdout so you can copy it manually.
completion bash
Generate bash shell completions. Pipe the output to your bash completions directory or source it directly.
Synopsis
gpc completion bashOptions
No command-specific options.
Example
Add to your .bashrc:
eval "$(gpc completion bash)"Or save to completions directory:
gpc completion bash > /etc/bash_completion.d/gpcOr for user-local completions:
mkdir -p ~/.local/share/bash-completion/completions
gpc completion bash > ~/.local/share/bash-completion/completions/gpc2
completion zsh
Generate zsh shell completions.
Synopsis
gpc completion zshOptions
No command-specific options.
Example
Add to your .zshrc:
eval "$(gpc completion zsh)"Or save to your fpath:
gpc completion zsh > "${fpath[1]}/_gpc"Or for Oh My Zsh users:
gpc completion zsh > ~/.oh-my-zsh/completions/_gpccompletion fish
Generate fish shell completions.
Synopsis
gpc completion fishOptions
No command-specific options.
Example
Save to fish completions directory:
gpc completion fish > ~/.config/fish/completions/gpc.fishOr load for the current session:
gpc completion fish | sourceRelated
- auth -- Fix authentication issues flagged by doctor
- config -- Fix configuration issues flagged by doctor
- Installation Guide -- Initial setup
