@gpc-cli/cli 0.9.49 → 0.9.50

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/dist/bin.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  createProgram,
4
4
  handleCliError,
5
5
  loadPlugins
6
- } from "./chunk-7A4IKNZ5.js";
6
+ } from "./chunk-VUTRVVWR.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";
49
+ var currentVersion = "0.9.50";
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")) {
@@ -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.49", "-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.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);
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-JOYJ7TQC.js")).registerConfigCommands(program);
76
+ (await import("./config-2AOJNBLQ.js")).registerConfigCommands(program);
77
77
  },
78
78
  doctor: async () => {
79
- (await import("./doctor-Q4WI432G.js")).registerDoctorCommand(program);
79
+ (await import("./doctor-KXJEQ3DV.js")).registerDoctorCommand(program);
80
80
  },
81
81
  update: async () => {
82
- (await import("./update-QSRQBFDJ.js")).registerUpdateCommand(program);
82
+ (await import("./update-IMIKX4LX.js")).registerUpdateCommand(program);
83
83
  },
84
84
  docs: async () => {
85
- (await import("./docs-4D2SJ4LY.js")).registerDocsCommand(program);
85
+ (await import("./docs-KXAHL3HY.js")).registerDocsCommand(program);
86
86
  },
87
87
  changelog: async () => {
88
88
  (await import("./changelog-QLDFG5TV.js")).registerChangelogCommand(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-V2OQLSVG.js")).registerVersionCommand(program);
186
+ (await import("./version-G2SFHULX.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-3JAMSICL.js")).registerFeedbackCommand(program);
192
+ (await import("./feedback-CP3YMXXI.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-7A4IKNZ5.js.map
460
+ //# sourceMappingURL=chunk-VUTRVVWR.js.map
@@ -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-Q4WI432G.js");
81
+ const { registerDoctorCommand } = await import("./doctor-KXJEQ3DV.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-JOYJ7TQC.js.map
110
+ //# sourceMappingURL=config-2AOJNBLQ.js.map
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/commands/docs.ts
4
+ import * as cp from "child_process";
5
+ var PAGE_MAP = {
6
+ // Guide
7
+ "quick-start": "guide/quick-start",
8
+ authentication: "guide/authentication",
9
+ configuration: "guide/configuration",
10
+ "developer-verification": "guide/developer-verification",
11
+ faq: "guide/faq",
12
+ // Commands
13
+ anomalies: "commands/anomalies",
14
+ apps: "commands/apps",
15
+ auth: "commands/auth",
16
+ bundle: "commands/bundle",
17
+ changelog: "commands/changelog",
18
+ config: "commands/config",
19
+ "data-safety": "commands/data-safety",
20
+ "device-tiers": "commands/device-tiers",
21
+ diff: "commands/diff",
22
+ enterprise: "commands/enterprise",
23
+ "external-transactions": "commands/external-transactions",
24
+ games: "commands/games",
25
+ "generated-apks": "commands/generated-apks",
26
+ grants: "commands/grants",
27
+ iap: "commands/iap",
28
+ init: "commands/init",
29
+ "install-skills": "commands/install-skills",
30
+ "internal-sharing": "commands/internal-sharing",
31
+ listings: "commands/listings",
32
+ migrate: "commands/migrate",
33
+ "one-time-products": "commands/one-time-products",
34
+ plugins: "commands/plugins",
35
+ preflight: "commands/preflight",
36
+ pricing: "commands/pricing",
37
+ publish: "commands/publish",
38
+ "purchase-options": "commands/purchase-options",
39
+ purchases: "commands/purchases",
40
+ quota: "commands/quota",
41
+ recovery: "commands/recovery",
42
+ releases: "commands/releases",
43
+ reports: "commands/reports",
44
+ reviews: "commands/reviews",
45
+ rtdn: "commands/rtdn",
46
+ status: "commands/status",
47
+ subscriptions: "commands/subscriptions",
48
+ testers: "commands/testers",
49
+ tracks: "commands/tracks",
50
+ train: "commands/train",
51
+ users: "commands/users",
52
+ verify: "commands/verify",
53
+ vitals: "commands/vitals",
54
+ // Advanced
55
+ architecture: "advanced/architecture",
56
+ "error-codes": "advanced/error-codes",
57
+ security: "advanced/security",
58
+ "sdk-usage": "advanced/sdk-usage",
59
+ troubleshooting: "advanced/troubleshooting",
60
+ // CI/CD
61
+ "github-actions": "ci-cd/github-actions",
62
+ "gitlab-ci": "ci-cd/gitlab-ci",
63
+ "vitals-gates": "ci-cd/vitals-gates",
64
+ // Migration
65
+ "from-fastlane": "migration/from-fastlane"
66
+ };
67
+ var BASE = "https://yasserstudio.github.io/gpc/";
68
+ function registerDocsCommand(program) {
69
+ program.command("docs [topic]").description("Open documentation in browser").option("--list", "List available documentation topics").action((topic, opts) => {
70
+ if (opts?.list) {
71
+ console.log("Available topics:");
72
+ for (const key of Object.keys(PAGE_MAP)) console.log(` gpc docs ${key}`);
73
+ return;
74
+ }
75
+ const path = topic ? PAGE_MAP[topic] : void 0;
76
+ if (topic && !path) {
77
+ const err = new Error(`Unknown topic "${topic}".`);
78
+ Object.assign(err, { code: "USAGE_ERROR", exitCode: 2, suggestion: "Run: gpc docs --list" });
79
+ throw err;
80
+ }
81
+ const url = path ? `${BASE}${path}` : BASE;
82
+ const platform = process.platform;
83
+ const cmd = platform === "darwin" ? "open" : platform === "win32" ? "start" : "xdg-open";
84
+ cp.execFile(cmd, [url], (error) => {
85
+ if (error) {
86
+ console.log(`Open in your browser: ${url}`);
87
+ }
88
+ });
89
+ });
90
+ }
91
+ export {
92
+ registerDocsCommand
93
+ };
94
+ //# sourceMappingURL=docs-KXAHL3HY.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 \"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 vitals: \"commands/vitals\",\n\n // Advanced\n architecture: \"advanced/architecture\",\n \"error-codes\": \"advanced/error-codes\",\n security: \"advanced/security\",\n \"sdk-usage\": \"advanced/sdk-usage\",\n troubleshooting: \"advanced/troubleshooting\",\n\n // CI/CD\n \"github-actions\": \"ci-cd/github-actions\",\n \"gitlab-ci\": \"ci-cd/gitlab-ci\",\n \"vitals-gates\": \"ci-cd/vitals-gates\",\n\n // Migration\n \"from-fastlane\": \"migration/from-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,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,QAAQ;AAAA;AAAA,EAGR,cAAc;AAAA,EACd,eAAe;AAAA,EACf,UAAU;AAAA,EACV,aAAa;AAAA,EACb,iBAAiB;AAAA;AAAA,EAGjB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,gBAAgB;AAAA;AAAA,EAGhB,iBAAiB;AACnB;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.49";
144
+ const currentVersion = "0.9.50";
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-Q4WI432G.js.map
743
+ //# sourceMappingURL=doctor-KXJEQ3DV.js.map
@@ -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.49";
12
+ const version = "0.9.50";
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-3JAMSICL.js.map
70
+ //# sourceMappingURL=feedback-CP3YMXXI.js.map
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  createProgram,
4
4
  handleCliError
5
- } from "./chunk-7A4IKNZ5.js";
5
+ } from "./chunk-VUTRVVWR.js";
6
6
  export {
7
7
  createProgram,
8
8
  handleCliError
@@ -17,7 +17,7 @@ function registerUpdateCommand(program) {
17
17
  program.command("update").description("Update gpc to the latest version").option("--check", "Check for updates without installing (exits 0 always)").option("--force", "Update even if already on the latest version").action(async (opts, cmd) => {
18
18
  const parentOpts = cmd.parent?.opts() ?? {};
19
19
  const jsonMode = !!(parentOpts["json"] || parentOpts["output"] === "json");
20
- const currentVersion = "0.9.49";
20
+ const currentVersion = "0.9.50";
21
21
  if (currentVersion === "0.0.0") {
22
22
  if (jsonMode) {
23
23
  console.log(
@@ -175,4 +175,4 @@ Run: gpc update`);
175
175
  export {
176
176
  registerUpdateCommand
177
177
  };
178
- //# sourceMappingURL=update-QSRQBFDJ.js.map
178
+ //# sourceMappingURL=update-IMIKX4LX.js.map
@@ -7,7 +7,7 @@ import "./chunk-3SJ6OXCZ.js";
7
7
  // src/commands/version.ts
8
8
  function registerVersionCommand(program) {
9
9
  program.command("version").description("Show version information").action(() => {
10
- const version = "0.9.49";
10
+ const version = "0.9.50";
11
11
  if (program.opts()["output"] === "json") {
12
12
  console.log(
13
13
  JSON.stringify({
@@ -25,4 +25,4 @@ function registerVersionCommand(program) {
25
25
  export {
26
26
  registerVersionCommand
27
27
  };
28
- //# sourceMappingURL=version-V2OQLSVG.js.map
28
+ //# sourceMappingURL=version-G2SFHULX.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gpc-cli/cli",
3
- "version": "0.9.49",
3
+ "version": "0.9.50",
4
4
  "description": "GPC — Google Play Console CLI. 204 API endpoints, one tool.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,11 +19,11 @@
19
19
  ],
20
20
  "dependencies": {
21
21
  "commander": "^14.0.3",
22
- "@gpc-cli/api": "1.0.26",
22
+ "@gpc-cli/auth": "0.9.11",
23
23
  "@gpc-cli/config": "0.9.11",
24
- "@gpc-cli/core": "0.9.40",
25
- "@gpc-cli/plugin-sdk": "0.9.7",
26
- "@gpc-cli/auth": "0.9.11"
24
+ "@gpc-cli/core": "0.9.41",
25
+ "@gpc-cli/api": "1.0.26",
26
+ "@gpc-cli/plugin-sdk": "0.9.7"
27
27
  },
28
28
  "keywords": [
29
29
  "google-play",
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // src/commands/docs.ts
4
- import * as cp from "child_process";
5
- var PAGE_MAP = {
6
- releases: "commands/releases",
7
- status: "commands/status",
8
- vitals: "commands/vitals",
9
- reviews: "commands/reviews",
10
- listings: "commands/listings",
11
- subscriptions: "commands/subscriptions",
12
- bundle: "commands/bundle",
13
- users: "commands/users",
14
- audit: "commands/audit",
15
- config: "commands/config",
16
- doctor: "commands/doctor",
17
- publish: "commands/publish"
18
- };
19
- var BASE = "https://yasserstudio.github.io/gpc/";
20
- function registerDocsCommand(program) {
21
- program.command("docs [topic]").description("Open documentation in browser").option("--list", "List available documentation topics").action((topic, opts) => {
22
- if (opts?.list) {
23
- console.log("Available topics:");
24
- for (const key of Object.keys(PAGE_MAP)) console.log(` gpc docs ${key}`);
25
- return;
26
- }
27
- const path = topic ? PAGE_MAP[topic] : void 0;
28
- if (topic && !path) {
29
- const err = new Error(`Unknown topic "${topic}".`);
30
- Object.assign(err, { code: "USAGE_ERROR", exitCode: 2, suggestion: "Run: gpc docs --list" });
31
- throw err;
32
- }
33
- const url = path ? `${BASE}${path}` : BASE;
34
- const platform = process.platform;
35
- const cmd = platform === "darwin" ? "open" : platform === "win32" ? "start" : "xdg-open";
36
- cp.execFile(cmd, [url], (error) => {
37
- if (error) {
38
- console.log(`Open in your browser: ${url}`);
39
- }
40
- });
41
- });
42
- }
43
- export {
44
- registerDocsCommand
45
- };
46
- //# sourceMappingURL=docs-4D2SJ4LY.js.map
@@ -1 +0,0 @@
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 releases: \"commands/releases\",\n status: \"commands/status\",\n vitals: \"commands/vitals\",\n reviews: \"commands/reviews\",\n listings: \"commands/listings\",\n subscriptions: \"commands/subscriptions\",\n bundle: \"commands/bundle\",\n users: \"commands/users\",\n audit: \"commands/audit\",\n config: \"commands/config\",\n doctor: \"commands/doctor\",\n publish: \"commands/publish\",\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,EACvC,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACX;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":[]}