@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.
- package/README.md +56 -122
- package/dist/anomalies-V3AFS4LD.js +0 -0
- package/dist/{apps-FKD3ZG5X.js → apps-4GP3FD7O.js} +6 -3
- package/dist/apps-4GP3FD7O.js.map +1 -0
- package/dist/audit-VTWXTXC6.js +0 -0
- package/dist/auth-BA4FE2PO.js +0 -0
- package/dist/bin.js +2 -2
- package/dist/bundle-F7MUVC5J.js +0 -0
- package/dist/cache-XKPLZYEB.js +0 -0
- package/dist/changelog-QLDFG5TV.js +0 -0
- package/dist/chunk-3SJ6OXCZ.js +0 -0
- package/dist/chunk-A7VRCCNS.js +17 -0
- package/dist/chunk-A7VRCCNS.js.map +1 -0
- package/dist/chunk-BCBXQC7J.js +0 -0
- package/dist/chunk-ELXAK7GI.js +0 -0
- package/dist/chunk-FAN4ZITI.js +0 -0
- package/dist/{chunk-VUTRVVWR.js → chunk-FXOWADQD.js} +14 -14
- package/dist/chunk-NQH4G7BI.js +0 -0
- package/dist/chunk-SLNJEAMK.js +0 -0
- package/dist/chunk-Y3QZDAKS.js +0 -0
- package/dist/chunk-YFUBD2XB.js +0 -0
- package/dist/completion-BCHRJSAT.js +0 -0
- package/dist/{config-2AOJNBLQ.js → config-BLMJ35J2.js} +2 -2
- package/dist/data-safety-AFMD6MYI.js +0 -0
- package/dist/device-tiers-AQAMUQXI.js +0 -0
- package/dist/diff-6EO4ID6W.js +0 -0
- package/dist/{docs-KXAHL3HY.js → docs-GMFN6V4K.js} +20 -3
- package/dist/docs-GMFN6V4K.js.map +1 -0
- package/dist/{doctor-KXJEQ3DV.js → doctor-7LQWPY5P.js} +2 -2
- package/dist/enterprise-7PWXMSUN.js +0 -0
- package/dist/external-transactions-LCZALS3V.js +0 -0
- package/dist/{feedback-CP3YMXXI.js → feedback-7ADYSGRD.js} +2 -2
- package/dist/games-ZSNGEI7A.js +0 -0
- package/dist/generated-apks-RX2IUWSF.js +0 -0
- package/dist/grants-EBPECI26.js +0 -0
- package/dist/iap-OUI5YYN4.js +0 -0
- package/dist/index.js +1 -1
- package/dist/init-WSTQTJOD.js +0 -0
- package/dist/install-skills-JKPYZHYS.js +0 -0
- package/dist/internal-sharing-ONNIWIAT.js +0 -0
- package/dist/{listings-7SGQ4SRX.js → listings-LNX6MQYN.js} +15 -11
- package/dist/listings-LNX6MQYN.js.map +1 -0
- package/dist/migrate-ZQCJGQQS.js +0 -0
- package/dist/one-time-products-MGZTU7OM.js +0 -0
- package/dist/preflight-W3JAJ4GO.js +0 -0
- package/dist/pricing-JJZFICFL.js +0 -0
- package/dist/prompt-GXC2JSLA.js +0 -0
- package/dist/{publish-JPTI4EBT.js → publish-P5KIGSLI.js} +20 -3
- package/dist/publish-P5KIGSLI.js.map +1 -0
- package/dist/purchase-options-KFWW4JW2.js +0 -0
- package/dist/purchases-UBFLNYZC.js +0 -0
- package/dist/quickstart-Z5Y3FYJU.js +0 -0
- package/dist/quota-MZRWYJGR.js +0 -0
- package/dist/recovery-YE3Z7NIN.js +0 -0
- package/dist/{releases-OUJ65774.js → releases-LUAHKIMY.js} +26 -6
- package/dist/releases-LUAHKIMY.js.map +1 -0
- package/dist/reports-CIB2T3XT.js +0 -0
- package/dist/reviews-YCBBM656.js +0 -0
- package/dist/rtdn-LID2B7XZ.js +0 -0
- package/dist/status-3HXBBXG6.js +0 -0
- package/dist/subscriptions-LURZFPGJ.js +0 -0
- package/dist/{testers-LSMBXCA2.js → testers-6CQL4KQV.js} +10 -7
- package/dist/testers-6CQL4KQV.js.map +1 -0
- package/dist/{tracks-DO7C5OSE.js → tracks-I4QZNZ3M.js} +8 -5
- package/dist/tracks-I4QZNZ3M.js.map +1 -0
- package/dist/train-MDD2EBHS.js +0 -0
- package/dist/{update-IMIKX4LX.js → update-FZ3MNLOH.js} +2 -2
- package/dist/users-UKG7VIQH.js +0 -0
- package/dist/validate-QIYSA3N7.js +0 -0
- package/dist/verify-UUQNQMPG.js +0 -0
- package/dist/{version-G2SFHULX.js → version-VHQBXU2I.js} +2 -2
- package/dist/vitals-PJEQUUAK.js +0 -0
- package/package.json +17 -17
- package/LICENSE +0 -21
- package/dist/apps-FKD3ZG5X.js.map +0 -1
- package/dist/docs-KXAHL3HY.js.map +0 -1
- package/dist/listings-7SGQ4SRX.js.map +0 -1
- package/dist/publish-JPTI4EBT.js.map +0 -1
- package/dist/releases-OUJ65774.js.map +0 -1
- package/dist/testers-LSMBXCA2.js.map +0 -1
- package/dist/tracks-DO7C5OSE.js.map +0 -1
- /package/dist/{chunk-VUTRVVWR.js.map → chunk-FXOWADQD.js.map} +0 -0
- /package/dist/{config-2AOJNBLQ.js.map → config-BLMJ35J2.js.map} +0 -0
- /package/dist/{doctor-KXJEQ3DV.js.map → doctor-7LQWPY5P.js.map} +0 -0
- /package/dist/{feedback-CP3YMXXI.js.map → feedback-7ADYSGRD.js.map} +0 -0
- /package/dist/{update-IMIKX4LX.js.map → update-FZ3MNLOH.js.map} +0 -0
- /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
|
-
|
|
3
|
+
**Ship Android apps from your terminal.** The complete CLI for the Google Play Developer API.
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
## Quick Start
|
|
11
|
+
## What it does
|
|
36
12
|
|
|
37
13
|
```bash
|
|
38
|
-
#
|
|
39
|
-
gpc
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
gpc
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
gpc
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
+
[Migration guide](https://yasserstudio.github.io/gpc/migration/from-fastlane) with one-to-one command mapping.
|
|
86
37
|
|
|
87
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
53
|
+
| Exit code | Meaning |
|
|
54
|
+
| --------- | ------------------ |
|
|
55
|
+
| `0` | Success |
|
|
56
|
+
| `3` | Auth failure |
|
|
57
|
+
| `4` | API error |
|
|
58
|
+
| `6` | Threshold breached |
|
|
136
59
|
|
|
137
|
-
|
|
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
|
-
|
|
151
|
-
gpc
|
|
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
|
-
|
|
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-
|
|
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"]}
|
package/dist/audit-VTWXTXC6.js
CHANGED
|
File without changes
|
package/dist/auth-BA4FE2PO.js
CHANGED
|
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-
|
|
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.
|
|
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")) {
|
package/dist/bundle-F7MUVC5J.js
CHANGED
|
File without changes
|
package/dist/cache-XKPLZYEB.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/chunk-3SJ6OXCZ.js
CHANGED
|
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":[]}
|
package/dist/chunk-BCBXQC7J.js
CHANGED
|
File without changes
|
package/dist/chunk-ELXAK7GI.js
CHANGED
|
File without changes
|
package/dist/chunk-FAN4ZITI.js
CHANGED
|
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.
|
|
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-
|
|
76
|
+
(await import("./config-BLMJ35J2.js")).registerConfigCommands(program);
|
|
77
77
|
},
|
|
78
78
|
doctor: async () => {
|
|
79
|
-
(await import("./doctor-
|
|
79
|
+
(await import("./doctor-7LQWPY5P.js")).registerDoctorCommand(program);
|
|
80
80
|
},
|
|
81
81
|
update: async () => {
|
|
82
|
-
(await import("./update-
|
|
82
|
+
(await import("./update-FZ3MNLOH.js")).registerUpdateCommand(program);
|
|
83
83
|
},
|
|
84
84
|
docs: async () => {
|
|
85
|
-
(await import("./docs-
|
|
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-
|
|
94
|
+
(await import("./apps-4GP3FD7O.js")).registerAppsCommands(program);
|
|
95
95
|
},
|
|
96
96
|
releases: async () => {
|
|
97
|
-
(await import("./releases-
|
|
97
|
+
(await import("./releases-LUAHKIMY.js")).registerReleasesCommands(program);
|
|
98
98
|
},
|
|
99
99
|
tracks: async () => {
|
|
100
|
-
(await import("./tracks-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
460
|
+
//# sourceMappingURL=chunk-FXOWADQD.js.map
|
package/dist/chunk-NQH4G7BI.js
CHANGED
|
File without changes
|
package/dist/chunk-SLNJEAMK.js
CHANGED
|
File without changes
|
package/dist/chunk-Y3QZDAKS.js
CHANGED
|
File without changes
|
package/dist/chunk-YFUBD2XB.js
CHANGED
|
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-
|
|
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-
|
|
110
|
+
//# sourceMappingURL=config-BLMJ35J2.js.map
|
|
File without changes
|
|
File without changes
|
package/dist/diff-6EO4ID6W.js
CHANGED
|
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
|
-
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
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.
|
|
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-
|
|
70
|
+
//# sourceMappingURL=feedback-7ADYSGRD.js.map
|
package/dist/games-ZSNGEI7A.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/grants-EBPECI26.js
CHANGED
|
File without changes
|
package/dist/iap-OUI5YYN4.js
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
package/dist/init-WSTQTJOD.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|