@gpc-cli/cli 0.9.50 → 0.9.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +56 -122
  2. package/dist/anomalies-V3AFS4LD.js +0 -0
  3. package/dist/{apps-FKD3ZG5X.js → apps-4GP3FD7O.js} +6 -3
  4. package/dist/apps-4GP3FD7O.js.map +1 -0
  5. package/dist/audit-VTWXTXC6.js +0 -0
  6. package/dist/auth-BA4FE2PO.js +0 -0
  7. package/dist/bin.js +2 -2
  8. package/dist/bundle-F7MUVC5J.js +0 -0
  9. package/dist/cache-XKPLZYEB.js +0 -0
  10. package/dist/changelog-QLDFG5TV.js +0 -0
  11. package/dist/chunk-3SJ6OXCZ.js +0 -0
  12. package/dist/chunk-A7VRCCNS.js +17 -0
  13. package/dist/chunk-A7VRCCNS.js.map +1 -0
  14. package/dist/chunk-BCBXQC7J.js +0 -0
  15. package/dist/chunk-ELXAK7GI.js +0 -0
  16. package/dist/chunk-FAN4ZITI.js +0 -0
  17. package/dist/{chunk-VUTRVVWR.js → chunk-FXOWADQD.js} +14 -14
  18. package/dist/chunk-NQH4G7BI.js +0 -0
  19. package/dist/chunk-SLNJEAMK.js +0 -0
  20. package/dist/chunk-Y3QZDAKS.js +0 -0
  21. package/dist/chunk-YFUBD2XB.js +0 -0
  22. package/dist/completion-BCHRJSAT.js +0 -0
  23. package/dist/{config-2AOJNBLQ.js → config-BLMJ35J2.js} +2 -2
  24. package/dist/data-safety-AFMD6MYI.js +0 -0
  25. package/dist/device-tiers-AQAMUQXI.js +0 -0
  26. package/dist/diff-6EO4ID6W.js +0 -0
  27. package/dist/{docs-KXAHL3HY.js → docs-GMFN6V4K.js} +20 -3
  28. package/dist/docs-GMFN6V4K.js.map +1 -0
  29. package/dist/{doctor-KXJEQ3DV.js → doctor-7LQWPY5P.js} +2 -2
  30. package/dist/enterprise-7PWXMSUN.js +0 -0
  31. package/dist/external-transactions-LCZALS3V.js +0 -0
  32. package/dist/{feedback-CP3YMXXI.js → feedback-7ADYSGRD.js} +2 -2
  33. package/dist/games-ZSNGEI7A.js +0 -0
  34. package/dist/generated-apks-RX2IUWSF.js +0 -0
  35. package/dist/grants-EBPECI26.js +0 -0
  36. package/dist/iap-OUI5YYN4.js +0 -0
  37. package/dist/index.js +1 -1
  38. package/dist/init-WSTQTJOD.js +0 -0
  39. package/dist/install-skills-JKPYZHYS.js +0 -0
  40. package/dist/internal-sharing-ONNIWIAT.js +0 -0
  41. package/dist/{listings-7SGQ4SRX.js → listings-LNX6MQYN.js} +15 -11
  42. package/dist/listings-LNX6MQYN.js.map +1 -0
  43. package/dist/migrate-ZQCJGQQS.js +0 -0
  44. package/dist/one-time-products-MGZTU7OM.js +0 -0
  45. package/dist/preflight-W3JAJ4GO.js +0 -0
  46. package/dist/pricing-JJZFICFL.js +0 -0
  47. package/dist/prompt-GXC2JSLA.js +0 -0
  48. package/dist/{publish-JPTI4EBT.js → publish-P5KIGSLI.js} +20 -3
  49. package/dist/publish-P5KIGSLI.js.map +1 -0
  50. package/dist/purchase-options-KFWW4JW2.js +0 -0
  51. package/dist/purchases-UBFLNYZC.js +0 -0
  52. package/dist/quickstart-Z5Y3FYJU.js +0 -0
  53. package/dist/quota-MZRWYJGR.js +0 -0
  54. package/dist/recovery-YE3Z7NIN.js +0 -0
  55. package/dist/{releases-OUJ65774.js → releases-LUAHKIMY.js} +26 -6
  56. package/dist/releases-LUAHKIMY.js.map +1 -0
  57. package/dist/reports-CIB2T3XT.js +0 -0
  58. package/dist/reviews-YCBBM656.js +0 -0
  59. package/dist/rtdn-LID2B7XZ.js +0 -0
  60. package/dist/status-3HXBBXG6.js +0 -0
  61. package/dist/subscriptions-LURZFPGJ.js +0 -0
  62. package/dist/{testers-LSMBXCA2.js → testers-6CQL4KQV.js} +10 -7
  63. package/dist/testers-6CQL4KQV.js.map +1 -0
  64. package/dist/{tracks-DO7C5OSE.js → tracks-I4QZNZ3M.js} +8 -5
  65. package/dist/tracks-I4QZNZ3M.js.map +1 -0
  66. package/dist/train-MDD2EBHS.js +0 -0
  67. package/dist/{update-IMIKX4LX.js → update-FZ3MNLOH.js} +2 -2
  68. package/dist/users-UKG7VIQH.js +0 -0
  69. package/dist/validate-QIYSA3N7.js +0 -0
  70. package/dist/verify-UUQNQMPG.js +0 -0
  71. package/dist/{version-G2SFHULX.js → version-VHQBXU2I.js} +2 -2
  72. package/dist/vitals-PJEQUUAK.js +0 -0
  73. package/package.json +17 -17
  74. package/LICENSE +0 -21
  75. package/dist/apps-FKD3ZG5X.js.map +0 -1
  76. package/dist/docs-KXAHL3HY.js.map +0 -1
  77. package/dist/listings-7SGQ4SRX.js.map +0 -1
  78. package/dist/publish-JPTI4EBT.js.map +0 -1
  79. package/dist/releases-OUJ65774.js.map +0 -1
  80. package/dist/testers-LSMBXCA2.js.map +0 -1
  81. package/dist/tracks-DO7C5OSE.js.map +0 -1
  82. /package/dist/{chunk-VUTRVVWR.js.map → chunk-FXOWADQD.js.map} +0 -0
  83. /package/dist/{config-2AOJNBLQ.js.map → config-BLMJ35J2.js.map} +0 -0
  84. /package/dist/{doctor-KXJEQ3DV.js.map → doctor-7LQWPY5P.js.map} +0 -0
  85. /package/dist/{feedback-CP3YMXXI.js.map → feedback-7ADYSGRD.js.map} +0 -0
  86. /package/dist/{update-IMIKX4LX.js.map → update-FZ3MNLOH.js.map} +0 -0
  87. /package/dist/{version-G2SFHULX.js.map → version-VHQBXU2I.js.map} +0 -0
package/README.md CHANGED
@@ -1,126 +1,46 @@
1
1
  # @gpc-cli/cli
2
2
 
3
- <p align="center"><strong>Ship Android apps from your terminal.</strong></p>
3
+ **Ship Android apps from your terminal.** The complete CLI for the Google Play Developer API.
4
4
 
5
- <p align="center">
6
- The complete CLI for Google Play — 204 API endpoints, one tool.<br>
7
- Releases, rollouts, metadata, vitals, reviews, subscriptions, reports, and more.
8
- </p>
9
-
10
- <p align="center">
11
- <a href="https://www.npmjs.com/package/@gpc-cli/cli"><img src="https://img.shields.io/npm/v/@gpc-cli/cli?color=00D26A" alt="npm version"></a>
12
- <a href="https://github.com/yasserstudio/gpc"><img src="https://img.shields.io/github/stars/yasserstudio/gpc" alt="GitHub Stars"></a>
13
- <img src="https://img.shields.io/badge/Tests-1845_passing-00D26A" alt="Tests">
14
- <img src="https://img.shields.io/badge/License-MIT-yellow" alt="License">
15
- </p>
16
-
17
- ## Install
5
+ 208 API endpoints. No Ruby. No browser. No ceremony.
18
6
 
19
7
  ```bash
20
- # npm (includes plugin support)
21
8
  npm install -g @gpc-cli/cli
22
-
23
- # Homebrew (macOS/Linux)
24
- brew install yasserstudio/tap/gpc
25
-
26
- # Standalone binary — macOS/Linux (no Node.js required)
27
- curl -fsSL https://raw.githubusercontent.com/yasserstudio/gpc/main/scripts/install.sh | sh
28
-
29
- # Standalone binary — Windows (PowerShell)
30
- iwr -useb https://raw.githubusercontent.com/yasserstudio/gpc/main/scripts/install.ps1 | iex
31
9
  ```
32
10
 
33
- Free. Open-source. No account required beyond your existing Google Play service account.
34
-
35
- ## Quick Start
11
+ ## What it does
36
12
 
37
13
  ```bash
38
- # Authenticate
39
- gpc auth login --service-account path/to/key.json
40
-
41
- # Verify your setup (20 automated checks)
42
- gpc doctor
43
-
44
- # App health at a glance releases, vitals, and reviews in one command
45
- gpc status
46
-
47
- # Upload and release (AAB or APK)
48
- gpc releases upload app.aab --track internal
49
-
50
- # Promote to production
51
- gpc releases promote --from internal --to production --rollout 10
52
-
53
- # Monitor reviews
54
- gpc reviews list --stars 1-3 --since 7d
55
- ```
56
-
57
- ## App Health at a Glance
58
-
59
- ```
60
- $ gpc status
61
-
62
- App: com.example.myapp · My App (fetched 10:42:01 AM)
63
-
64
- RELEASES
65
- production v1.4.2 completed —
66
- beta v1.5.0 inProgress 10%
67
- internal v1.5.1 draft —
68
-
69
- VITALS (last 7 days)
70
- crashes 0.80% ✓ anr 0.20% ✓
71
- slow starts 2.10% ✓ slow render 4.30% ⚠
72
-
73
- REVIEWS (last 30 days)
74
- ★ 4.6 142 new 89% positive ↑ from 4.4
14
+ gpc status # Releases + vitals + reviews in 3 seconds
15
+ gpc releases upload app.aab --track beta # Upload to any track
16
+ gpc releases promote --from beta --to production --rollout 10
17
+ gpc preflight app.aab # 9 offline policy scanners
18
+ gpc vitals crashes --threshold 2.0 # Exit code 6 if breached
19
+ gpc reviews list --stars 1-2 --since 7d # Filter and reply to reviews
20
+ gpc listings push --dir metadata/ # Sync store metadata
21
+ gpc doctor # 20 setup checks
75
22
  ```
76
23
 
77
- 6 parallel API calls, results in under 3 seconds. Results cached — `--cached` skips the network entirely.
78
-
79
- ## Why GPC
80
-
81
- Fastlane supply covers ~20 of 204 Google Play API endpoints. gradle-play-publisher covers ~15. Neither gives you reviews, vitals, subscriptions, or reports. GPC covers the entire API — no Ruby, no JVM, no browser. Every write operation supports `--dry-run`. Works with your existing service account.
24
+ ## Why this over Fastlane?
82
25
 
83
- ## What You Get
26
+ | | **GPC** | Fastlane supply |
27
+ | ----------------- | ----------------- | ----------------- |
28
+ | API coverage | **208 endpoints** | ~20 |
29
+ | Runtime | Node.js or binary | Ruby + Bundler |
30
+ | Cold start | <500ms | 2-3s |
31
+ | Reviews & Vitals | Yes | No |
32
+ | Subscriptions | Yes | No |
33
+ | Preflight scanner | 9 offline checks | No |
34
+ | CI/CD native | JSON + exit codes | Partial |
84
35
 
85
- 204 API endpoints across these command groups:
36
+ [Migration guide](https://yasserstudio.github.io/gpc/migration/from-fastlane) with one-to-one command mapping.
86
37
 
87
- | Group | What you can do |
88
- | ----------------- | -------------------------------------------------------------------------------------- |
89
- | **Releases** | Upload AAB/APK, promote, rollout increase/halt/resume, draft releases, `publish` |
90
- | **Preflight** | 9 offline AAB policy scanners — catches rejections before upload |
91
- | **Listings** | Pull and push store listings, upload screenshots — Fastlane metadata compatible |
92
- | **Reviews** | Filter by stars, reply (350-char validated), auto-paginate, export to CSV |
93
- | **Vitals** | Crash rates, ANR, startup, rendering, battery, memory — with CI threshold gates |
94
- | **Status** | Releases + vitals + reviews in one command, `--watch`, `--since-last` diff |
95
- | **Bundle** | Per-module size breakdown, build-to-build diff, size CI gates |
96
- | **Subscriptions** | Base plans, offers, pricing, batch operations, RTDN notification decoding |
97
- | **IAP / OTP** | One-time products, purchase options, batch get/update/delete |
98
- | **Purchases** | Verify, acknowledge, cancel, refund, voided (with `--type` subscription filter) |
99
- | **Reports** | Financial and stats report downloads |
100
- | **Testers** | Add, remove, import from CSV |
101
- | **Users** | Invite, update, remove, manage per-app grants |
102
- | **Doctor** | 20 automated setup checks — config, auth, connectivity, app access, key age |
103
- | **Anomalies** | Auto-detect vitals quality spikes from Reporting API |
104
- | **More** | Init, diff, changelog, quota, train, cache, feedback, enterprise, games |
38
+ ## CI/CD
105
39
 
106
- ## Exit Codes
107
-
108
- | Code | Meaning |
109
- | ---- | ------------------------------------- |
110
- | `0` | Success |
111
- | `1` | General error |
112
- | `2` | Usage error (bad arguments) |
113
- | `3` | Authentication error |
114
- | `4` | API error (rate limit, permission) |
115
- | `5` | Network error |
116
- | `6` | Threshold breach (vitals CI alerting) |
117
-
118
- ## CI/CD Ready
119
-
120
- JSON output when piped. Formatted tables in your terminal. Semantic exit codes (0-6) your CI can react to. Every write operation supports `--dry-run`.
40
+ JSON output when piped. Semantic exit codes your pipeline can react to.
121
41
 
122
42
  ```yaml
123
- - name: Upload
43
+ - name: Ship to Play Store
124
44
  env:
125
45
  GPC_SERVICE_ACCOUNT: ${{ secrets.GPC_SERVICE_ACCOUNT }}
126
46
  GPC_APP: com.example.myapp
@@ -130,28 +50,42 @@ JSON output when piped. Formatted tables in your terminal. Semantic exit codes (
130
50
  gpc releases upload app.aab --track internal
131
51
  ```
132
52
 
133
- Already on Fastlane? See the [migration guide](https://yasserstudio.github.io/gpc/migration/from-fastlane) — most commands map one-to-one.
134
-
135
- ## Related Packages
53
+ | Exit code | Meaning |
54
+ | --------- | ------------------ |
55
+ | `0` | Success |
56
+ | `3` | Auth failure |
57
+ | `4` | API error |
58
+ | `6` | Threshold breached |
136
59
 
137
- | Package | Description |
138
- | ------------------------------------------------------------------------ | -------------------------------------------- |
139
- | **@gpc-cli/cli** | CLI entry point (this package) |
140
- | [@gpc-cli/core](https://www.npmjs.com/package/@gpc-cli/core) | Business logic and orchestration |
141
- | [@gpc-cli/api](https://www.npmjs.com/package/@gpc-cli/api) | Typed Google Play API v3 client |
142
- | [@gpc-cli/auth](https://www.npmjs.com/package/@gpc-cli/auth) | Authentication (service account, OAuth, ADC) |
143
- | [@gpc-cli/config](https://www.npmjs.com/package/@gpc-cli/config) | Configuration and profiles |
144
- | [@gpc-cli/plugin-sdk](https://www.npmjs.com/package/@gpc-cli/plugin-sdk) | Plugin interface and lifecycle hooks |
145
- | [@gpc-cli/plugin-ci](https://www.npmjs.com/package/@gpc-cli/plugin-ci) | CI/CD helpers |
146
-
147
- ## Get Started
60
+ ## Also available as
148
61
 
149
62
  ```bash
150
- npm install -g @gpc-cli/cli
151
- gpc doctor
63
+ # Homebrew
64
+ brew install yasserstudio/tap/gpc
65
+
66
+ # Standalone binary (no Node.js required)
67
+ curl -fsSL https://raw.githubusercontent.com/yasserstudio/gpc/main/scripts/install.sh | sh
152
68
  ```
153
69
 
154
- Full docs at **[yasserstudio.github.io/gpc](https://yasserstudio.github.io/gpc/)** | [GitHub](https://github.com/yasserstudio/gpc)
70
+ ## Related packages
71
+
72
+ | Package | What it does |
73
+ | ------- | ------------ |
74
+ | [@gpc-cli/api](https://www.npmjs.com/package/@gpc-cli/api) | Typed Google Play API v3 client (standalone SDK) |
75
+ | [@gpc-cli/auth](https://www.npmjs.com/package/@gpc-cli/auth) | Authentication (service account, OAuth, ADC) |
76
+ | [@gpc-cli/core](https://www.npmjs.com/package/@gpc-cli/core) | Business logic and orchestration |
77
+ | [@gpc-cli/config](https://www.npmjs.com/package/@gpc-cli/config) | Configuration and profiles |
78
+ | [@gpc-cli/plugin-sdk](https://www.npmjs.com/package/@gpc-cli/plugin-sdk) | Plugin interface |
79
+ | [@gpc-cli/plugin-ci](https://www.npmjs.com/package/@gpc-cli/plugin-ci) | CI/CD helpers |
80
+
81
+ ## Links
82
+
83
+ - [Documentation](https://yasserstudio.github.io/gpc/)
84
+ - [GitHub](https://github.com/yasserstudio/gpc)
85
+ - [Commands reference](https://yasserstudio.github.io/gpc/commands/)
86
+ - [CI/CD recipes](https://yasserstudio.github.io/gpc/ci-cd/)
87
+
88
+ Free to use. 1,860 tests. 90%+ coverage. Every write operation supports `--dry-run`.
155
89
 
156
90
  ## License
157
91
 
File without changes
@@ -1,4 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ buildCommitOptions
4
+ } from "./chunk-A7VRCCNS.js";
2
5
  import {
3
6
  isDryRun,
4
7
  printDryRun
@@ -34,7 +37,7 @@ function registerAppsCommands(program) {
34
37
  const format = getOutputFormat(program, config);
35
38
  console.log(formatOutput(info, format));
36
39
  });
37
- apps.command("update").description("Update app details").option("--email <email>", "Contact email").option("--phone <phone>", "Contact phone").option("--website <url>", "Contact website").option("--default-lang <lang>", "Default language").action(async (options) => {
40
+ apps.command("update").description("Update app details").option("--email <email>", "Contact email").option("--phone <phone>", "Contact phone").option("--website <url>", "Contact website").option("--default-lang <lang>", "Default language").option("--changes-not-sent-for-review", "Commit changes without sending for review").option("--error-if-in-review", "Fail if changes are already in review").action(async (options) => {
38
41
  const config = await loadConfig();
39
42
  const packageName = options["app"] || program.opts()["app"] || config.app;
40
43
  if (!packageName) {
@@ -75,7 +78,7 @@ function registerAppsCommands(program) {
75
78
  serviceAccountPath: config.auth?.serviceAccount
76
79
  });
77
80
  const client = createApiClient({ auth });
78
- const result = await updateAppDetails(client, packageName, data);
81
+ const result = await updateAppDetails(client, packageName, data, buildCommitOptions(options));
79
82
  console.log(formatOutput(result, format));
80
83
  });
81
84
  apps.command("list").description("List configured applications").option("--limit <n>", "Maximum results to return").option("--next-page <token>", "Pagination token for next page").action(async (_options) => {
@@ -98,4 +101,4 @@ function registerAppsCommands(program) {
98
101
  export {
99
102
  registerAppsCommands
100
103
  };
101
- //# sourceMappingURL=apps-FKD3ZG5X.js.map
104
+ //# sourceMappingURL=apps-4GP3FD7O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/apps.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { loadConfig } from \"@gpc-cli/config\";\nimport { resolveAuth } from \"@gpc-cli/auth\";\nimport { createApiClient } from \"@gpc-cli/api\";\nimport { getAppInfo, updateAppDetails, GpcError } from \"@gpc-cli/core\";\nimport { formatOutput } from \"@gpc-cli/core\";\nimport { getOutputFormat } from \"../format.js\";\nimport { isDryRun, printDryRun } from \"../dry-run.js\";\nimport { buildCommitOptions } from \"../commit-options.js\";\n\nexport function registerAppsCommands(program: Command): void {\n const apps = program.command(\"apps\").description(\"Manage applications\");\n\n apps\n .command(\"info [package]\")\n .description(\"Show app details\")\n .action(async (packageArg?: string) => {\n const config = await loadConfig();\n const packageName = packageArg || config.app;\n\n if (!packageName) {\n throw new GpcError(\n \"No package name provided. Usage: gpc apps info <package>\",\n \"MISSING_PACKAGE\",\n 2,\n \"gpc config set app com.example.app\",\n );\n }\n\n const auth = await resolveAuth({\n serviceAccountPath: config.auth?.serviceAccount,\n });\n const client = createApiClient({ auth });\n const info = await getAppInfo(client, packageName);\n const format = getOutputFormat(program, config);\n console.log(formatOutput(info, format));\n });\n\n apps\n .command(\"update\")\n .description(\"Update app details\")\n .option(\"--email <email>\", \"Contact email\")\n .option(\"--phone <phone>\", \"Contact phone\")\n .option(\"--website <url>\", \"Contact website\")\n .option(\"--default-lang <lang>\", \"Default language\")\n .option(\"--changes-not-sent-for-review\", \"Commit changes without sending for review\")\n .option(\"--error-if-in-review\", \"Fail if changes are already in review\")\n .action(async (options) => {\n const config = await loadConfig();\n const packageName = options[\"app\"] || program.opts()[\"app\"] || config.app;\n\n if (!packageName) {\n throw new GpcError(\n \"No package name provided. Usage: gpc apps update --email user@example.com\",\n \"MISSING_PACKAGE\",\n 2,\n \"gpc config set app com.example.app\",\n );\n }\n\n const data: Record<string, string> = {};\n if (options[\"email\"]) data[\"contactEmail\"] = options[\"email\"];\n if (options[\"phone\"]) data[\"contactPhone\"] = options[\"phone\"];\n if (options[\"website\"]) data[\"contactWebsite\"] = options[\"website\"];\n if (options[\"defaultLang\"]) data[\"defaultLanguage\"] = options[\"defaultLang\"];\n\n if (Object.keys(data).length === 0) {\n throw new GpcError(\n \"Provide at least one field to update (--email, --phone, --website, --default-lang).\",\n \"MISSING_OPTION\",\n 2,\n );\n }\n\n const format = getOutputFormat(program, config);\n\n if (isDryRun(program)) {\n printDryRun(\n {\n command: \"apps update\",\n action: \"update app details for\",\n target: packageName,\n details: data,\n },\n format,\n formatOutput,\n );\n return;\n }\n\n const auth = await resolveAuth({\n serviceAccountPath: config.auth?.serviceAccount,\n });\n const client = createApiClient({ auth });\n const result = await updateAppDetails(client, packageName, data, buildCommitOptions(options));\n console.log(formatOutput(result, format));\n });\n\n apps\n .command(\"list\")\n .description(\"List configured applications\")\n .option(\"--limit <n>\", \"Maximum results to return\")\n .option(\"--next-page <token>\", \"Pagination token for next page\")\n .action(async (_options) => {\n const config = await loadConfig();\n const format = getOutputFormat(program, config);\n\n if (config.app) {\n const apps = [{ packageName: config.app, source: \"config\" }];\n console.log(formatOutput(apps, format));\n } else {\n console.log(\"No apps configured.\");\n console.log(\"\");\n console.log(\"Set a default app:\");\n console.log(\" gpc config set app com.example.myapp\");\n console.log(\"\");\n console.log(\"Or use the --app flag:\");\n console.log(\" gpc apps info --app com.example.myapp\");\n }\n });\n}\n"],"mappings":"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","names":["apps"]}
File without changes
File without changes
package/dist/bin.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  createProgram,
4
4
  handleCliError,
5
5
  loadPlugins
6
- } from "./chunk-VUTRVVWR.js";
6
+ } from "./chunk-FXOWADQD.js";
7
7
  import {
8
8
  checkForUpdate,
9
9
  formatUpdateNotification
@@ -46,7 +46,7 @@ if (!_isJsonMode && !_isQuiet && !_isSetupCommand && !existsSync(getUserConfigPa
46
46
  }
47
47
  await setupNetworking();
48
48
  initAudit(getConfigDir());
49
- var currentVersion = "0.9.50";
49
+ var currentVersion = "0.9.52";
50
50
  var isUpdateCommand = process.argv[2] === "update";
51
51
  var updateCheckPromise = isUpdateCommand ? Promise.resolve(null) : checkForUpdate(currentVersion);
52
52
  if (process.argv.includes("--ci")) {
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/commit-options.ts
4
+ function buildCommitOptions(opts) {
5
+ const notSent = !!opts.changesNotSentForReview;
6
+ const errorIfReview = !!opts.errorIfInReview;
7
+ if (!notSent && !errorIfReview) return void 0;
8
+ return {
9
+ ...notSent && { changesNotSentForReview: true },
10
+ ...errorIfReview && { changesInReviewBehavior: "ERROR_IF_IN_REVIEW" }
11
+ };
12
+ }
13
+
14
+ export {
15
+ buildCommitOptions
16
+ };
17
+ //# sourceMappingURL=chunk-A7VRCCNS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commit-options.ts"],"sourcesContent":["import type { EditCommitOptions } from \"@gpc-cli/api\";\n\nexport function buildCommitOptions(opts: Record<string, unknown>): EditCommitOptions | undefined {\n const notSent = !!opts.changesNotSentForReview;\n const errorIfReview = !!opts.errorIfInReview;\n if (!notSent && !errorIfReview) return undefined;\n return {\n ...(notSent && { changesNotSentForReview: true }),\n ...(errorIfReview && { changesInReviewBehavior: \"ERROR_IF_IN_REVIEW\" as const }),\n };\n}\n"],"mappings":";;;AAEO,SAAS,mBAAmB,MAA8D;AAC/F,QAAM,UAAU,CAAC,CAAC,KAAK;AACvB,QAAM,gBAAgB,CAAC,CAAC,KAAK;AAC7B,MAAI,CAAC,WAAW,CAAC,cAAe,QAAO;AACvC,SAAO;AAAA,IACL,GAAI,WAAW,EAAE,yBAAyB,KAAK;AAAA,IAC/C,GAAI,iBAAiB,EAAE,yBAAyB,qBAA8B;AAAA,EAChF;AACF;","names":[]}
File without changes
File without changes
File without changes
@@ -67,22 +67,22 @@ function registerPluginCommands(program, manager) {
67
67
  import { Command } from "commander";
68
68
  async function createProgram(pluginManager) {
69
69
  const program = new Command();
70
- program.name("gpc").description("GPC \u2014 Google Play Console CLI").version("0.9.50", "-V, --version").option("-o, --output <format>", "Output format: table, json, yaml, markdown, junit").option("-v, --verbose", "Enable debug logging").option("-q, --quiet", "Suppress non-essential output").option("-a, --app <package>", "App package name").option("-p, --profile <name>", "Auth profile name").option("--no-color", "Disable colored output").option("--no-interactive", "Disable interactive prompts").option("-y, --yes", "Skip confirmation prompts").option("--dry-run", "Preview changes without executing").option("--notify [target]", "Send webhook notification on completion (slack, discord, custom)").option("--ci", "Force CI mode (JSON output, no prompts, strict exit codes)").option("-j, --json", "Shorthand for --output json").option("--apps <csv>", "Comma-separated package names for multi-app operations").showSuggestionAfterError(false);
70
+ program.name("gpc").description("GPC \u2014 Google Play Console CLI").version("0.9.52", "-V, --version").option("-o, --output <format>", "Output format: table, json, yaml, markdown, junit").option("-v, --verbose", "Enable debug logging").option("-q, --quiet", "Suppress non-essential output").option("-a, --app <package>", "App package name").option("-p, --profile <name>", "Auth profile name").option("--no-color", "Disable colored output").option("--no-interactive", "Disable interactive prompts").option("-y, --yes", "Skip confirmation prompts").option("--dry-run", "Preview changes without executing").option("--notify [target]", "Send webhook notification on completion (slack, discord, custom)").option("--ci", "Force CI mode (JSON output, no prompts, strict exit codes)").option("-j, --json", "Shorthand for --output json").option("--apps <csv>", "Comma-separated package names for multi-app operations").showSuggestionAfterError(false);
71
71
  const commandLoaders = {
72
72
  auth: async () => {
73
73
  (await import("./auth-BA4FE2PO.js")).registerAuthCommands(program);
74
74
  },
75
75
  config: async () => {
76
- (await import("./config-2AOJNBLQ.js")).registerConfigCommands(program);
76
+ (await import("./config-BLMJ35J2.js")).registerConfigCommands(program);
77
77
  },
78
78
  doctor: async () => {
79
- (await import("./doctor-KXJEQ3DV.js")).registerDoctorCommand(program);
79
+ (await import("./doctor-7LQWPY5P.js")).registerDoctorCommand(program);
80
80
  },
81
81
  update: async () => {
82
- (await import("./update-IMIKX4LX.js")).registerUpdateCommand(program);
82
+ (await import("./update-FZ3MNLOH.js")).registerUpdateCommand(program);
83
83
  },
84
84
  docs: async () => {
85
- (await import("./docs-KXAHL3HY.js")).registerDocsCommand(program);
85
+ (await import("./docs-GMFN6V4K.js")).registerDocsCommand(program);
86
86
  },
87
87
  changelog: async () => {
88
88
  (await import("./changelog-QLDFG5TV.js")).registerChangelogCommand(program);
@@ -91,19 +91,19 @@ async function createProgram(pluginManager) {
91
91
  (await import("./completion-BCHRJSAT.js")).registerCompletionCommand(program);
92
92
  },
93
93
  apps: async () => {
94
- (await import("./apps-FKD3ZG5X.js")).registerAppsCommands(program);
94
+ (await import("./apps-4GP3FD7O.js")).registerAppsCommands(program);
95
95
  },
96
96
  releases: async () => {
97
- (await import("./releases-OUJ65774.js")).registerReleasesCommands(program);
97
+ (await import("./releases-LUAHKIMY.js")).registerReleasesCommands(program);
98
98
  },
99
99
  tracks: async () => {
100
- (await import("./tracks-DO7C5OSE.js")).registerTracksCommands(program);
100
+ (await import("./tracks-I4QZNZ3M.js")).registerTracksCommands(program);
101
101
  },
102
102
  status: async () => {
103
103
  (await import("./status-3HXBBXG6.js")).registerStatusCommand(program);
104
104
  },
105
105
  listings: async () => {
106
- (await import("./listings-7SGQ4SRX.js")).registerListingsCommands(program);
106
+ (await import("./listings-LNX6MQYN.js")).registerListingsCommands(program);
107
107
  },
108
108
  reviews: async () => {
109
109
  (await import("./reviews-YCBBM656.js")).registerReviewsCommands(program);
@@ -130,13 +130,13 @@ async function createProgram(pluginManager) {
130
130
  (await import("./users-UKG7VIQH.js")).registerUsersCommands(program);
131
131
  },
132
132
  testers: async () => {
133
- (await import("./testers-LSMBXCA2.js")).registerTestersCommands(program);
133
+ (await import("./testers-6CQL4KQV.js")).registerTestersCommands(program);
134
134
  },
135
135
  validate: async () => {
136
136
  (await import("./validate-QIYSA3N7.js")).registerValidateCommand(program);
137
137
  },
138
138
  publish: async () => {
139
- (await import("./publish-JPTI4EBT.js")).registerPublishCommand(program);
139
+ (await import("./publish-P5KIGSLI.js")).registerPublishCommand(program);
140
140
  },
141
141
  recovery: async () => {
142
142
  (await import("./recovery-YE3Z7NIN.js")).registerRecoveryCommands(program);
@@ -183,13 +183,13 @@ async function createProgram(pluginManager) {
183
183
  (await import("./verify-UUQNQMPG.js")).registerVerifyCommand(program);
184
184
  },
185
185
  version: async () => {
186
- (await import("./version-G2SFHULX.js")).registerVersionCommand(program);
186
+ (await import("./version-VHQBXU2I.js")).registerVersionCommand(program);
187
187
  },
188
188
  cache: async () => {
189
189
  (await import("./cache-XKPLZYEB.js")).registerCacheCommand(program);
190
190
  },
191
191
  feedback: async () => {
192
- (await import("./feedback-CP3YMXXI.js")).registerFeedbackCommand(program);
192
+ (await import("./feedback-7ADYSGRD.js")).registerFeedbackCommand(program);
193
193
  },
194
194
  quickstart: async () => {
195
195
  (await import("./quickstart-Z5Y3FYJU.js")).registerQuickstartCommand(program);
@@ -457,4 +457,4 @@ export {
457
457
  createProgram,
458
458
  handleCliError
459
459
  };
460
- //# sourceMappingURL=chunk-VUTRVVWR.js.map
460
+ //# sourceMappingURL=chunk-FXOWADQD.js.map
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -78,7 +78,7 @@ Configuration file created: ${path}`);
78
78
  });
79
79
  console.log("\nVerifying setup...");
80
80
  try {
81
- const { registerDoctorCommand } = await import("./doctor-KXJEQ3DV.js");
81
+ const { registerDoctorCommand } = await import("./doctor-7LQWPY5P.js");
82
82
  const { Command } = await import("commander");
83
83
  const doctorProgram = new Command();
84
84
  doctorProgram.option("-o, --output <format>", "Output format").option("-j, --json", "JSON mode");
@@ -107,4 +107,4 @@ Configuration file created: ${path}`);
107
107
  export {
108
108
  registerConfigCommands
109
109
  };
110
- //# sourceMappingURL=config-2AOJNBLQ.js.map
110
+ //# sourceMappingURL=config-BLMJ35J2.js.map
File without changes
File without changes
File without changes
@@ -4,6 +4,7 @@
4
4
  import * as cp from "child_process";
5
5
  var PAGE_MAP = {
6
6
  // Guide
7
+ installation: "guide/installation",
7
8
  "quick-start": "guide/quick-start",
8
9
  authentication: "guide/authentication",
9
10
  configuration: "guide/configuration",
@@ -50,19 +51,35 @@ var PAGE_MAP = {
50
51
  train: "commands/train",
51
52
  users: "commands/users",
52
53
  verify: "commands/verify",
54
+ utility: "commands/utility",
53
55
  vitals: "commands/vitals",
54
56
  // Advanced
55
57
  architecture: "advanced/architecture",
58
+ conventions: "advanced/conventions",
56
59
  "error-codes": "advanced/error-codes",
57
- security: "advanced/security",
60
+ plugins: "advanced/plugins",
58
61
  "sdk-usage": "advanced/sdk-usage",
62
+ security: "advanced/security",
63
+ skills: "advanced/skills",
59
64
  troubleshooting: "advanced/troubleshooting",
60
65
  // CI/CD
66
+ bitbucket: "ci-cd/bitbucket",
67
+ circleci: "ci-cd/circleci",
61
68
  "github-actions": "ci-cd/github-actions",
62
69
  "gitlab-ci": "ci-cd/gitlab-ci",
63
70
  "vitals-gates": "ci-cd/vitals-gates",
71
+ // Reference
72
+ "api-coverage": "reference/api-coverage",
73
+ changelog: "reference/changelog",
74
+ deprecations: "reference/deprecations",
75
+ "environment-variables": "reference/environment-variables",
76
+ "exit-codes": "reference/exit-codes",
77
+ "json-contract": "reference/json-contract",
64
78
  // Migration
65
- "from-fastlane": "migration/from-fastlane"
79
+ "from-console-ui": "migration/from-console-ui",
80
+ "from-fastlane": "migration/from-fastlane",
81
+ // Alternatives
82
+ fastlane: "alternatives/fastlane"
66
83
  };
67
84
  var BASE = "https://yasserstudio.github.io/gpc/";
68
85
  function registerDocsCommand(program) {
@@ -91,4 +108,4 @@ function registerDocsCommand(program) {
91
108
  export {
92
109
  registerDocsCommand
93
110
  };
94
- //# sourceMappingURL=docs-KXAHL3HY.js.map
111
+ //# sourceMappingURL=docs-GMFN6V4K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/docs.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport * as cp from \"node:child_process\";\n\nconst PAGE_MAP: Record<string, string> = {\n // Guide\n installation: \"guide/installation\",\n \"quick-start\": \"guide/quick-start\",\n authentication: \"guide/authentication\",\n configuration: \"guide/configuration\",\n \"developer-verification\": \"guide/developer-verification\",\n faq: \"guide/faq\",\n\n // Commands\n anomalies: \"commands/anomalies\",\n apps: \"commands/apps\",\n auth: \"commands/auth\",\n bundle: \"commands/bundle\",\n changelog: \"commands/changelog\",\n config: \"commands/config\",\n \"data-safety\": \"commands/data-safety\",\n \"device-tiers\": \"commands/device-tiers\",\n diff: \"commands/diff\",\n enterprise: \"commands/enterprise\",\n \"external-transactions\": \"commands/external-transactions\",\n games: \"commands/games\",\n \"generated-apks\": \"commands/generated-apks\",\n grants: \"commands/grants\",\n iap: \"commands/iap\",\n init: \"commands/init\",\n \"install-skills\": \"commands/install-skills\",\n \"internal-sharing\": \"commands/internal-sharing\",\n listings: \"commands/listings\",\n migrate: \"commands/migrate\",\n \"one-time-products\": \"commands/one-time-products\",\n plugins: \"commands/plugins\",\n preflight: \"commands/preflight\",\n pricing: \"commands/pricing\",\n publish: \"commands/publish\",\n \"purchase-options\": \"commands/purchase-options\",\n purchases: \"commands/purchases\",\n quota: \"commands/quota\",\n recovery: \"commands/recovery\",\n releases: \"commands/releases\",\n reports: \"commands/reports\",\n reviews: \"commands/reviews\",\n rtdn: \"commands/rtdn\",\n status: \"commands/status\",\n subscriptions: \"commands/subscriptions\",\n testers: \"commands/testers\",\n tracks: \"commands/tracks\",\n train: \"commands/train\",\n users: \"commands/users\",\n verify: \"commands/verify\",\n utility: \"commands/utility\",\n vitals: \"commands/vitals\",\n\n // Advanced\n architecture: \"advanced/architecture\",\n conventions: \"advanced/conventions\",\n \"error-codes\": \"advanced/error-codes\",\n plugins: \"advanced/plugins\",\n \"sdk-usage\": \"advanced/sdk-usage\",\n security: \"advanced/security\",\n skills: \"advanced/skills\",\n troubleshooting: \"advanced/troubleshooting\",\n\n // CI/CD\n bitbucket: \"ci-cd/bitbucket\",\n circleci: \"ci-cd/circleci\",\n \"github-actions\": \"ci-cd/github-actions\",\n \"gitlab-ci\": \"ci-cd/gitlab-ci\",\n \"vitals-gates\": \"ci-cd/vitals-gates\",\n\n // Reference\n \"api-coverage\": \"reference/api-coverage\",\n changelog: \"reference/changelog\",\n deprecations: \"reference/deprecations\",\n \"environment-variables\": \"reference/environment-variables\",\n \"exit-codes\": \"reference/exit-codes\",\n \"json-contract\": \"reference/json-contract\",\n\n // Migration\n \"from-console-ui\": \"migration/from-console-ui\",\n \"from-fastlane\": \"migration/from-fastlane\",\n\n // Alternatives\n fastlane: \"alternatives/fastlane\",\n};\n\nconst BASE = \"https://yasserstudio.github.io/gpc/\";\n\nexport function registerDocsCommand(program: Command): void {\n program\n .command(\"docs [topic]\")\n .description(\"Open documentation in browser\")\n .option(\"--list\", \"List available documentation topics\")\n .action((topic?: string, opts?: { list?: boolean }) => {\n if (opts?.list) {\n console.log(\"Available topics:\");\n for (const key of Object.keys(PAGE_MAP)) console.log(` gpc docs ${key}`);\n return;\n }\n const path = topic ? PAGE_MAP[topic] : undefined;\n if (topic && !path) {\n const err = new Error(`Unknown topic \"${topic}\".`);\n Object.assign(err, { code: \"USAGE_ERROR\", exitCode: 2, suggestion: \"Run: gpc docs --list\" });\n throw err;\n }\n const url = path ? `${BASE}${path}` : BASE;\n const platform = process.platform;\n const cmd = platform === \"darwin\" ? \"open\" : platform === \"win32\" ? \"start\" : \"xdg-open\";\n cp.execFile(cmd, [url], (error) => {\n if (error) {\n console.log(`Open in your browser: ${url}`);\n }\n });\n });\n}\n"],"mappings":";;;AACA,YAAY,QAAQ;AAEpB,IAAM,WAAmC;AAAA;AAAA,EAEvC,cAAc;AAAA,EACd,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,0BAA0B;AAAA,EAC1B,KAAK;AAAA;AAAA,EAGL,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,yBAAyB;AAAA,EACzB,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,qBAAqB;AAAA,EACrB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAGR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AAAA,EACf,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,iBAAiB;AAAA;AAAA,EAGjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,gBAAgB;AAAA;AAAA,EAGhB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,cAAc;AAAA,EACd,iBAAiB;AAAA;AAAA,EAGjB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA;AAAA,EAGjB,UAAU;AACZ;AAEA,IAAM,OAAO;AAEN,SAAS,oBAAoB,SAAwB;AAC1D,UACG,QAAQ,cAAc,EACtB,YAAY,+BAA+B,EAC3C,OAAO,UAAU,qCAAqC,EACtD,OAAO,CAAC,OAAgB,SAA8B;AACrD,QAAI,MAAM,MAAM;AACd,cAAQ,IAAI,mBAAmB;AAC/B,iBAAW,OAAO,OAAO,KAAK,QAAQ,EAAG,SAAQ,IAAI,cAAc,GAAG,EAAE;AACxE;AAAA,IACF;AACA,UAAM,OAAO,QAAQ,SAAS,KAAK,IAAI;AACvC,QAAI,SAAS,CAAC,MAAM;AAClB,YAAM,MAAM,IAAI,MAAM,kBAAkB,KAAK,IAAI;AACjD,aAAO,OAAO,KAAK,EAAE,MAAM,eAAe,UAAU,GAAG,YAAY,uBAAuB,CAAC;AAC3F,YAAM;AAAA,IACR;AACA,UAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,KAAK;AACtC,UAAM,WAAW,QAAQ;AACzB,UAAM,MAAM,aAAa,WAAW,SAAS,aAAa,UAAU,UAAU;AAC9E,IAAG,YAAS,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU;AACjC,UAAI,OAAO;AACT,gBAAQ,IAAI,yBAAyB,GAAG,EAAE;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACL;","names":[]}
@@ -141,7 +141,7 @@ function checkCiEnvironment() {
141
141
  };
142
142
  }
143
143
  async function checkGpcVersion() {
144
- const currentVersion = "0.9.50";
144
+ const currentVersion = "0.9.52";
145
145
  if (currentVersion === "0.0.0") {
146
146
  return { name: "version", status: "info", message: "GPC development build" };
147
147
  }
@@ -740,4 +740,4 @@ export {
740
740
  checkVerificationDeadline,
741
741
  registerDoctorCommand
742
742
  };
743
- //# sourceMappingURL=doctor-KXJEQ3DV.js.map
743
+ //# sourceMappingURL=doctor-7LQWPY5P.js.map
File without changes
File without changes
@@ -9,7 +9,7 @@ import { execFile } from "child_process";
9
9
  import { listAuditEvents } from "@gpc-cli/core";
10
10
  function registerFeedbackCommand(program) {
11
11
  program.command("feedback").description("Open a pre-filled GitHub issue with system diagnostics").option("--title <title>", "Issue title").option("--print", "Print the report to stdout instead of opening a browser").action(async (opts) => {
12
- const version = "0.9.50";
12
+ const version = "0.9.52";
13
13
  let lastCommand = "";
14
14
  try {
15
15
  const events = await listAuditEvents({ limit: 3 });
@@ -67,4 +67,4 @@ ${url}`);
67
67
  export {
68
68
  registerFeedbackCommand
69
69
  };
70
- //# sourceMappingURL=feedback-CP3YMXXI.js.map
70
+ //# sourceMappingURL=feedback-7ADYSGRD.js.map
File without changes
File without changes
File without changes
File without changes
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  createProgram,
4
4
  handleCliError
5
- } from "./chunk-VUTRVVWR.js";
5
+ } from "./chunk-FXOWADQD.js";
6
6
  export {
7
7
  createProgram,
8
8
  handleCliError
File without changes
File without changes
File without changes