@capuchoo/cli 0.3.0 → 0.4.0

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 (68) hide show
  1. package/README.md +233 -26
  2. package/dist/base-command.d.ts +1 -1
  3. package/dist/base-command.js +1 -1
  4. package/dist/commands/app/delete.d.ts +20 -0
  5. package/dist/commands/app/delete.d.ts.map +1 -0
  6. package/dist/commands/app/delete.js +71 -0
  7. package/dist/commands/app/delete.js.map +1 -0
  8. package/dist/commands/app/list.d.ts +9 -0
  9. package/dist/commands/app/list.d.ts.map +1 -0
  10. package/dist/commands/app/list.js +40 -0
  11. package/dist/commands/app/list.js.map +1 -0
  12. package/dist/commands/auth/login.d.ts.map +1 -1
  13. package/dist/commands/auth/login.js +1 -1
  14. package/dist/commands/auth/login.js.map +1 -1
  15. package/dist/commands/auth/whoami.d.ts.map +1 -1
  16. package/dist/commands/auth/whoami.js +13 -1
  17. package/dist/commands/auth/whoami.js.map +1 -1
  18. package/dist/commands/channel/create.d.ts +25 -0
  19. package/dist/commands/channel/create.d.ts.map +1 -0
  20. package/dist/commands/channel/create.js +96 -0
  21. package/dist/commands/channel/create.js.map +1 -0
  22. package/dist/commands/channel/delete.d.ts +19 -0
  23. package/dist/commands/channel/delete.d.ts.map +1 -0
  24. package/dist/commands/channel/delete.js +66 -0
  25. package/dist/commands/channel/delete.js.map +1 -0
  26. package/dist/commands/channel/list.js +1 -1
  27. package/dist/commands/channel/list.js.map +1 -1
  28. package/dist/commands/doctor.d.ts.map +1 -1
  29. package/dist/commands/doctor.js +18 -3
  30. package/dist/commands/doctor.js.map +1 -1
  31. package/dist/commands/init.d.ts +11 -0
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +146 -33
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/org/create.d.ts +19 -0
  36. package/dist/commands/org/create.d.ts.map +1 -0
  37. package/dist/commands/org/create.js +45 -0
  38. package/dist/commands/org/create.js.map +1 -0
  39. package/dist/commands/org/list.d.ts +9 -0
  40. package/dist/commands/org/list.d.ts.map +1 -0
  41. package/dist/commands/org/list.js +41 -0
  42. package/dist/commands/org/list.js.map +1 -0
  43. package/dist/commands/setup.d.ts +16 -0
  44. package/dist/commands/setup.d.ts.map +1 -0
  45. package/dist/commands/setup.js +168 -0
  46. package/dist/commands/setup.js.map +1 -0
  47. package/dist/deploy/execute.js +1 -1
  48. package/dist/deploy/execute.js.map +1 -1
  49. package/dist/pipeline/build.js +1 -1
  50. package/dist/pipeline/build.js.map +1 -1
  51. package/dist/pipeline/capacitor-support.d.ts +53 -0
  52. package/dist/pipeline/capacitor-support.d.ts.map +1 -0
  53. package/dist/pipeline/capacitor-support.js +95 -0
  54. package/dist/pipeline/capacitor-support.js.map +1 -0
  55. package/dist/pipeline/deploy.js +1 -1
  56. package/dist/pipeline/deploy.js.map +1 -1
  57. package/dist/pipeline/flavour.js +1 -1
  58. package/dist/pipeline/flavour.js.map +1 -1
  59. package/dist/services/cloud.d.ts +22 -2
  60. package/dist/services/cloud.d.ts.map +1 -1
  61. package/dist/services/cloud.js +26 -3
  62. package/dist/services/cloud.js.map +1 -1
  63. package/dist/utils/http.d.ts +2 -0
  64. package/dist/utils/http.d.ts.map +1 -1
  65. package/dist/utils/http.js +4 -0
  66. package/dist/utils/http.js.map +1 -1
  67. package/oclif.manifest.json +330 -5
  68. package/package.json +11 -4
@@ -1,5 +1,5 @@
1
- import { askText, confirm, selectOne } from "../cli/prompts.js";
2
- import { ENVIRONMENTS, PROJECT_CONFIG_VERSION, canCreateApps, defaultFlavour, isValidBundleId, } from "@capuchoo/core";
1
+ import { askText, confirm, isInteractive, log, selectOne } from "../cli/prompts.js";
2
+ import { ENVIRONMENTS, PROJECT_CONFIG_VERSION, canCreateApps, canPublishTo, defaultFlavour, environmentMismatchWarning, suggestEnvironment, isValidBundleId, } from "@capuchoo/core";
3
3
  import { Flags } from "@oclif/core";
4
4
  import chalk from "chalk";
5
5
  import fs from "node:fs";
@@ -10,13 +10,44 @@ import { projectConfigPath, readProjectConfig, resolveCredentials, writeProjectC
10
10
  import AuthLogin from "./auth/login.js";
11
11
  import { BaseCommand } from "../base-command.js";
12
12
  export default class Init extends BaseCommand {
13
- static description = "Link this directory to a Capucho app and write .capucho/project.json";
14
- static examples = ["<%= config.bin %> init", "<%= config.bin %> init --link"];
13
+ static description = "Link this directory to a Capuchoo app and write .capuchoo/project.json";
14
+ static examples = [
15
+ "<%= config.bin %> init",
16
+ "<%= config.bin %> init --link",
17
+ "<%= config.bin %> init --create",
18
+ '<%= config.bin %> init --create --name "My App" --app-id com.acme.app --channel staging',
19
+ ];
15
20
  static flags = {
16
21
  link: Flags.boolean({
17
22
  char: "l",
18
23
  default: false,
19
- description: "Link an existing app instead of creating one",
24
+ description: "Link an existing app instead of asking",
25
+ exclusive: ["create"],
26
+ }),
27
+ // Without this, a non-interactive shell could only ever link: the prompt
28
+ // named --link as its escape hatch and there was no flag for the other half
29
+ // of the same question.
30
+ create: Flags.boolean({
31
+ char: "c",
32
+ default: false,
33
+ description: "Create a new app instead of asking",
34
+ exclusive: ["link"],
35
+ }),
36
+ name: Flags.string({
37
+ description: "Name of the app to create (default: this directory's name)",
38
+ dependsOn: ["create"],
39
+ }),
40
+ // Used by both halves: with --create it is the identifier to register, with
41
+ // --link the identifier to select. Either way it names the app.
42
+ "app-id": Flags.string({
43
+ description: "Bundle identifier of the app, e.g. com.company.app",
44
+ }),
45
+ org: Flags.string({
46
+ description: "Organization to create the app in, by name or id",
47
+ dependsOn: ["create"],
48
+ }),
49
+ channel: Flags.string({
50
+ description: "Create this channel after linking, e.g. staging",
20
51
  }),
21
52
  force: Flags.boolean({
22
53
  char: "f",
@@ -28,7 +59,7 @@ export default class Init extends BaseCommand {
28
59
  const { flags } = await this.parse(Init);
29
60
  const appDir = process.cwd();
30
61
  this.log("");
31
- this.log(chalk.bold(" Initialise Capucho"));
62
+ this.log(chalk.bold(" Initialise Capuchoo"));
32
63
  this.log(chalk.dim(` ${appDir}`));
33
64
  this.log("");
34
65
  const existing = readProjectConfig(appDir);
@@ -64,11 +95,28 @@ export default class Init extends BaseCommand {
64
95
  // --- pick or create the app ---------------------------------------------
65
96
  const mode = flags.link
66
97
  ? "existing"
67
- : await selectOne("Link this directory to", [
68
- { value: "existing", label: "An app that already exists" },
69
- { value: "new", label: "A new app" },
70
- ], "--link");
71
- const app = mode === "existing" ? await this.linkExisting(cloud) : await this.createNew(cloud);
98
+ : flags.create
99
+ ? "new"
100
+ : await selectOne("Should this directory publish to an existing app, or a new one?", [
101
+ { value: "existing", label: "An app that already exists" },
102
+ { value: "new", label: "A new app" },
103
+ ], "--link or --create");
104
+ const app = mode === "existing"
105
+ ? await this.linkExisting(cloud, flags["app-id"])
106
+ : await this.createNew(cloud, {
107
+ name: flags.name,
108
+ appId: flags["app-id"],
109
+ org: flags.org,
110
+ });
111
+ // The key that just created or linked this app may not be allowed to publish
112
+ // to it: an app-scoped key can read every app the account owns. Say so here
113
+ // rather than let the first deploy discover it after a full build.
114
+ if (!canPublishTo(profile, app.id)) {
115
+ this.log("");
116
+ this.log(chalk.yellow(" The API key in use is restricted to another app, so deploys from here\n" +
117
+ ` will be refused. Run "capuchoo auth login" with a key for ${app.name}\n` +
118
+ " or an unscoped one."));
119
+ }
72
120
  // --- flavours ------------------------------------------------------------
73
121
  const flavours = this.detectFlavours(appDir);
74
122
  const detected = Object.keys(flavours);
@@ -121,12 +169,55 @@ export default class Init extends BaseCommand {
121
169
  chalk.cyan(`capuchoo deploy ota --channel ${deployable[0].name}`));
122
170
  }
123
171
  else {
124
- this.log(chalk.yellow(" This app has no channel with an environment set yet."));
125
- this.log(chalk.dim(" Create one in the dashboard - the environment is what tells the CLI\n" +
126
- " which flavour to build."));
172
+ // An app with no channel is not deployable, and init already knows it.
173
+ // Sending people to the dashboard here was the one thing that made setting
174
+ // an app up a CLI-browser-CLI round trip.
175
+ await this.offerFirstChannel(cloud, app, flags.channel);
127
176
  }
128
177
  this.log("");
129
178
  }
179
+ /**
180
+ * Creates the first channel, because a linked app without one cannot be
181
+ * deployed to. The environment is chosen explicitly: a channel's name never
182
+ * decides which flavour it serves.
183
+ */
184
+ async offerFirstChannel(cloud, app, requested) {
185
+ this.log(chalk.yellow(" This app has no channel yet, so nothing can be deployed to it."));
186
+ this.log(chalk.dim(" A channel's environment is what tells the CLI which flavour to build.\n"));
187
+ const name = requested?.trim();
188
+ if (!name && !isInteractive()) {
189
+ this.log(chalk.dim(" Create one with: ") +
190
+ chalk.cyan("capuchoo channel create staging") +
191
+ chalk.dim(" (or pass --channel)"));
192
+ return;
193
+ }
194
+ if (!name) {
195
+ const create = await confirm("Create one now?", { default: true });
196
+ if (!create) {
197
+ this.log(chalk.dim(" Later: ") + chalk.cyan("capuchoo channel create staging"));
198
+ return;
199
+ }
200
+ }
201
+ const chosen = name ?? (await askText("Channel name", { initial: "staging", flag: "--channel" })).trim();
202
+ const environment = suggestEnvironment(chosen) ??
203
+ (await selectOne(`Which flavour should "${chosen}" serve?`, ENVIRONMENTS.map((value) => ({ value, label: value })), "--channel <name> with a name like staging"));
204
+ const warning = environmentMismatchWarning(chosen, environment);
205
+ if (warning)
206
+ log.warn(warning);
207
+ try {
208
+ const channel = await cloud.createChannel({ app_id: app.id, name: chosen, environment });
209
+ this.log("");
210
+ this.log(` ${chalk.green("Created channel")} ${channel.name} ${chalk.dim(`(${environment})`)}`);
211
+ this.log(chalk.dim(" Deploy with: ") + chalk.cyan(`capuchoo deploy ota --channel ${channel.name}`));
212
+ }
213
+ catch (error) {
214
+ // The app and project.json are already correct, so this is a warning and
215
+ // not a failure - `capuchoo channel create` retries just this step.
216
+ this.log("");
217
+ this.log(chalk.yellow(` The channel could not be created: ${error instanceof Error ? error.message : String(error)}`));
218
+ this.log(chalk.dim(` Retry with: capuchoo channel create ${chosen}`));
219
+ }
220
+ }
130
221
  /** Detects which flavours the project actually has files for. */
131
222
  detectFlavours(appDir) {
132
223
  const found = {};
@@ -150,17 +241,24 @@ export default class Init extends BaseCommand {
150
241
  }
151
242
  return "dist";
152
243
  }
153
- async linkExisting(cloud) {
244
+ async linkExisting(cloud, wanted) {
154
245
  const spinner = ora({ text: "Fetching apps", stream: process.stderr }).start();
155
246
  const apps = await cloud.apps();
156
247
  spinner.stop();
157
248
  if (apps.length === 0) {
158
- this.error("This account has no apps yet. Re-run and choose to create one, or " +
159
- "create it in the dashboard.");
249
+ this.error("This account has no apps yet. Run capuchoo init --create to register one.");
250
+ }
251
+ if (wanted) {
252
+ const match = apps.find((app) => app.app_id === wanted || app.id === wanted);
253
+ if (!match) {
254
+ this.error(`No app called "${wanted}" on this account. ` +
255
+ `Available: ${apps.map((app) => app.app_id).join(", ")}.`);
256
+ }
257
+ return match;
160
258
  }
161
- return selectOne("App", apps.map((app) => ({ value: app, label: app.name, hint: app.app_id })), "--link with the app selected in the dashboard");
259
+ return selectOne("Which app does this directory publish to?", apps.map((app) => ({ value: app, label: app.name, hint: app.app_id })), "--app-id");
162
260
  }
163
- async createNew(cloud) {
261
+ async createNew(cloud, given) {
164
262
  const spinner = ora({
165
263
  text: "Fetching organizations",
166
264
  stream: process.stderr,
@@ -174,20 +272,35 @@ export default class Init extends BaseCommand {
174
272
  : "This account is a member, not an owner or admin, of every organization " +
175
273
  "it belongs to, so it cannot create an app. Ask an owner.");
176
274
  }
177
- const organizationId = allowed.length === 1
178
- ? allowed[0].id
179
- : await selectOne("Organization", allowed.map((org) => ({ value: org.id, label: org.name, hint: org.role })), "--link");
180
- const name = await askText("App name", {
181
- initial: path.basename(process.cwd()),
182
- flag: "--link",
183
- });
184
- const appId = await askText("Production bundle identifier", {
185
- placeholder: "com.company.app",
186
- flag: "--link",
187
- validate: (value) => isValidBundleId(value.trim())
188
- ? undefined
189
- : "Expected something like com.company.app - lower case, at least two segments",
190
- });
275
+ const requested = given.org?.trim().toLowerCase();
276
+ const chosen = requested
277
+ ? allowed.find((org) => org.id === given.org?.trim() || org.name.toLowerCase() === requested)
278
+ : undefined;
279
+ if (requested && !chosen) {
280
+ this.error(`No organization called "${given.org}" that this account can create apps in. ` +
281
+ `Available: ${allowed.map((org) => org.name).join(", ")}.`);
282
+ }
283
+ const organizationId = chosen?.id ??
284
+ (allowed.length === 1
285
+ ? allowed[0].id
286
+ : await selectOne("Organization", allowed.map((org) => ({ value: org.id, label: org.name, hint: org.role })), "--org"));
287
+ const name = given.name?.trim() ||
288
+ (await askText("App name", {
289
+ initial: path.basename(process.cwd()),
290
+ flag: "--name",
291
+ }));
292
+ const appId = given.appId?.trim() ||
293
+ (await askText("Production bundle identifier", {
294
+ placeholder: "com.company.app",
295
+ flag: "--app-id",
296
+ validate: (value) => isValidBundleId(value.trim())
297
+ ? undefined
298
+ : "Expected something like com.company.app - lower case, at least two segments",
299
+ }));
300
+ if (!isValidBundleId(appId)) {
301
+ this.error(`"${appId}" is not a bundle identifier. Expected something like com.company.app - ` +
302
+ "lower case, at least two segments.");
303
+ }
191
304
  // Creating an app is the one irreversible thing this command does.
192
305
  const proceed = await confirm(`Create "${name}" (${appId})?`, { default: true });
193
306
  if (!proceed)
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ /**
3
+ * An account with no organization cannot own an app, so this was the one step
4
+ * that forced a browser before anything else could happen. The server derives
5
+ * the slug - two organizations called "SIG Service" must not both become
6
+ * `sig-service`.
7
+ */
8
+ export default class OrgCreate extends BaseCommand {
9
+ static description: string;
10
+ static examples: string[];
11
+ static args: {
12
+ name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ static flags: {
15
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/org/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,OAAgB,WAAW,SAA4B;IAEvD,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyB3B"}
@@ -0,0 +1,45 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import chalk from "chalk";
3
+ import { BaseCommand } from "../../base-command.js";
4
+ import { CloudClient } from "../../services/cloud.js";
5
+ import { resolveCredentials } from "../../utils/config.js";
6
+ /**
7
+ * An account with no organization cannot own an app, so this was the one step
8
+ * that forced a browser before anything else could happen. The server derives
9
+ * the slug - two organizations called "SIG Service" must not both become
10
+ * `sig-service`.
11
+ */
12
+ export default class OrgCreate extends BaseCommand {
13
+ static description = "Create an organization";
14
+ static examples = [
15
+ '<%= config.bin %> org create "SIG Service"',
16
+ "<%= config.bin %> org create Acme --json",
17
+ ];
18
+ static args = {
19
+ name: Args.string({ description: "Display name of the organization" }),
20
+ };
21
+ static flags = {
22
+ json: Flags.boolean({ default: false, description: "Machine-readable output" }),
23
+ };
24
+ async run() {
25
+ const { args, flags } = await this.parse(OrgCreate);
26
+ const credentials = resolveCredentials();
27
+ if (!credentials) {
28
+ this.error(`Not authenticated. Run ${chalk.cyan("capuchoo auth login")}.`);
29
+ }
30
+ const name = args.name?.trim();
31
+ if (!name) {
32
+ this.error('What should it be called? e.g. capuchoo org create "SIG Service".');
33
+ }
34
+ const cloud = new CloudClient(credentials.endpoint, credentials.apiKey);
35
+ const organization = await cloud.createOrganization({ name });
36
+ if (flags.json) {
37
+ this.log(JSON.stringify(organization, null, 2));
38
+ return;
39
+ }
40
+ this.log("");
41
+ this.log(` ${chalk.green("Created")} ${organization.name} ${chalk.dim(organization.slug)}`);
42
+ this.log(chalk.dim(" Add an app to it with: capuchoo init --create") + "\n");
43
+ }
44
+ }
45
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/org/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAU,WAAW,GAAG,wBAAwB,CAAC;IAEvD,MAAM,CAAU,QAAQ,GAAG;QACzB,4CAA4C;QAC5C,0CAA0C;KAC3C,CAAC;IAEF,MAAM,CAAU,IAAI,GAAG;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;KACvE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;KAChF,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,GAAG,IAAI,CAAC,CAAC;IAChF,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from "../../base-command.js";
2
+ export default class OrgList extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/org/list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,OAAgB,WAAW,SAAoD;IAE/E,OAAgB,KAAK;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmC3B"}
@@ -0,0 +1,41 @@
1
+ import { canCreateApps } from "@capuchoo/core";
2
+ import { Flags } from "@oclif/core";
3
+ import chalk from "chalk";
4
+ import { BaseCommand } from "../../base-command.js";
5
+ import { CloudClient } from "../../services/cloud.js";
6
+ import { resolveCredentials } from "../../utils/config.js";
7
+ export default class OrgList extends BaseCommand {
8
+ static description = "List the organizations this account belongs to";
9
+ static flags = {
10
+ json: Flags.boolean({ default: false, description: "Machine-readable output" }),
11
+ };
12
+ async run() {
13
+ const { flags } = await this.parse(OrgList);
14
+ const credentials = resolveCredentials();
15
+ if (!credentials) {
16
+ this.error(`Not authenticated. Run ${chalk.cyan("capuchoo auth login")}.`);
17
+ }
18
+ const cloud = new CloudClient(credentials.endpoint, credentials.apiKey);
19
+ const organizations = await cloud.organizations();
20
+ if (flags.json) {
21
+ this.log(JSON.stringify(organizations, null, 2));
22
+ return;
23
+ }
24
+ if (organizations.length === 0) {
25
+ this.log("");
26
+ this.log(chalk.yellow(" This account belongs to no organization yet."));
27
+ this.log(chalk.dim(' Create one with: capuchoo org create "Your Company"') + "\n");
28
+ return;
29
+ }
30
+ this.log("");
31
+ for (const organization of organizations) {
32
+ // Only an owner or admin can add apps, and a member finding that out from
33
+ // a failed `init` is worse than seeing it here.
34
+ const note = canCreateApps(organization) ? "" : chalk.dim(" - cannot create apps");
35
+ this.log(` ${organization.name.padEnd(24)} ${chalk.dim(organization.role)}${note}\n` +
36
+ ` ${chalk.dim(organization.slug)}`);
37
+ }
38
+ this.log("");
39
+ }
40
+ }
41
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/org/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;KAChF,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAElD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,GAAG,IAAI,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,0EAA0E;YAC1E,gDAAgD;YAChD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,CACN,KAAK,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI;gBAC1E,KAAK,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CACtC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class Setup extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ native: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ "skip-telemetry": import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ "skip-sync": import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ "dry-run": import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ /** The two edits and two commands that remain. Both are easy to forget. */
14
+ private reportNextSteps;
15
+ }
16
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA4CjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,OAAgB,WAAW,SAA0D;IAErF,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;;;MAkBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAuH1B,2EAA2E;IAC3E,OAAO,CAAC,eAAe;CA6BxB"}
@@ -0,0 +1,168 @@
1
+ import { Flags } from "@oclif/core";
2
+ import chalk from "chalk";
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+ import { BaseCommand } from "../base-command.js";
6
+ import { confirm, isInteractive, log, note } from "../cli/prompts.js";
7
+ import { SUPPORTED_MAJORS, detectCapacitor, installSpec, isSupportedMajor, nativePackages, runtimePackages, telemetryPackages, } from "../pipeline/capacitor-support.js";
8
+ import { detectToolchain, lookupTools } from "../pipeline/toolchain.js";
9
+ import { run } from "../utils/exec.js";
10
+ /**
11
+ * Installs what an app needs to receive updates, at versions that match the
12
+ * Capacitor it is already on.
13
+ *
14
+ * The packages have to be the *application's* own dependencies. `cap sync` finds
15
+ * plugins by reading the app's `dependencies` and `devDependencies` -
16
+ * @capacitor/cli's `getDependencies()` does not recurse - so a Capacitor plugin
17
+ * pulled in transitively by @capuchoo/updater would have its JavaScript
18
+ * installed and its native half never added to the Android or iOS project. That
19
+ * is why this command exists instead of a longer dependency list on the updater.
20
+ *
21
+ * Version selection lives in pipeline/capacitor-support.ts: installing bare
22
+ * names resolves to `latest`, which puts Capacitor 8 plugins into a Capacitor 7
23
+ * app.
24
+ */
25
+ const CLI = {
26
+ name: "@capuchoo/cli",
27
+ range: null,
28
+ why: "this tool, pinned for your team and CI",
29
+ };
30
+ const INSTALL_ARGS = {
31
+ pnpm: (dev) => (dev ? ["add", "-D"] : ["add"]),
32
+ npm: (dev) => (dev ? ["install", "--save-dev"] : ["install"]),
33
+ yarn: (dev) => (dev ? ["add", "-D"] : ["add"]),
34
+ bun: (dev) => (dev ? ["add", "-d"] : ["add"]),
35
+ };
36
+ export default class Setup extends BaseCommand {
37
+ static description = "Install everything this app needs to receive updates";
38
+ static examples = [
39
+ "<%= config.bin %> setup",
40
+ "<%= config.bin %> setup --native",
41
+ "<%= config.bin %> setup --dry-run",
42
+ ];
43
+ static flags = {
44
+ native: Flags.boolean({
45
+ default: false,
46
+ description: "Also install what downloading and installing an APK needs",
47
+ }),
48
+ "skip-telemetry": Flags.boolean({
49
+ default: false,
50
+ description: "Do not install @capacitor/device",
51
+ }),
52
+ "skip-sync": Flags.boolean({
53
+ default: false,
54
+ description: "Do not run cap sync afterwards",
55
+ }),
56
+ "dry-run": Flags.boolean({
57
+ default: false,
58
+ description: "Report what would be installed, change nothing",
59
+ }),
60
+ yes: Flags.boolean({ char: "y", default: false, description: "Accept every prompt" }),
61
+ };
62
+ async run() {
63
+ const { flags } = await this.parse(Setup);
64
+ const appDir = process.cwd();
65
+ const manifestPath = path.join(appDir, "package.json");
66
+ if (!fs.existsSync(manifestPath)) {
67
+ this.error(`No package.json in ${appDir}. Run this from your application's root.`);
68
+ }
69
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));
70
+ const installed = { ...manifest.dependencies, ...manifest.devDependencies };
71
+ // Which Capacitor this app is on decides every version below, so an
72
+ // unsupported or absent one stops here rather than installing a set of
73
+ // plugins nobody has run together.
74
+ const capacitor = detectCapacitor(manifest);
75
+ if (!isSupportedMajor(capacitor.major)) {
76
+ this.error(capacitor.major === null
77
+ ? "No @capacitor/core in this package.json, so this is not a Capacitor app yet. " +
78
+ "Run npx cap init first, then this command."
79
+ : `This app is on Capacitor ${capacitor.major}, and Capuchoo installs for ` +
80
+ `${SUPPORTED_MAJORS.join(" and ")}. Upgrade the app, or open an issue - the ` +
81
+ "runtime itself is version-agnostic, only the plugin versions are pinned.");
82
+ }
83
+ const wanted = [
84
+ ...runtimePackages(capacitor.major),
85
+ ...(flags["skip-telemetry"] ? [] : telemetryPackages(capacitor.major)),
86
+ ...(flags.native ? nativePackages(capacitor.major) : []),
87
+ ];
88
+ const missing = wanted.filter((pkg) => !installed[pkg.name]);
89
+ const missingCli = installed[CLI.name] ? null : CLI;
90
+ this.log("");
91
+ this.log(chalk.bold(" Capuchoo setup"));
92
+ this.log(chalk.dim(` ${appDir}`));
93
+ this.log(chalk.dim(` Capacitor ${capacitor.major}`));
94
+ this.log("");
95
+ if (missing.length === 0 && !missingCli) {
96
+ log.success("Everything is already installed.");
97
+ this.reportNextSteps(appDir);
98
+ return;
99
+ }
100
+ for (const pkg of missing) {
101
+ const pinned = pkg.range ? chalk.dim(`@${pkg.range}`) : "";
102
+ this.log(` ${chalk.green("+")} ${pkg.name}${pinned} ${chalk.dim(`- ${pkg.why}`)}`);
103
+ }
104
+ if (missingCli) {
105
+ this.log(` ${chalk.green("+")} ${missingCli.name} ${chalk.dim(`- ${missingCli.why} (dev)`)}`);
106
+ }
107
+ if (!flags.native) {
108
+ this.log("");
109
+ this.log(chalk.dim(" Not installed: the four plugins the in-app APK install needs.\n" +
110
+ " OTA updates do not use them - add them later with --native."));
111
+ }
112
+ this.log("");
113
+ if (flags["dry-run"]) {
114
+ log.info("Dry run: nothing was installed.");
115
+ return;
116
+ }
117
+ const toolchain = detectToolchain(appDir);
118
+ log.info(`Package manager: ${toolchain.packageManager}`);
119
+ const interactive = !flags.yes && isInteractive();
120
+ if (interactive && !(await confirm("Install these?", { default: true }))) {
121
+ log.warn("Nothing was installed.");
122
+ return;
123
+ }
124
+ if (missing.length > 0) {
125
+ await run(toolchain.packageManager, [...INSTALL_ARGS[toolchain.packageManager](false), ...missing.map(installSpec)], { cwd: appDir, verbose: true });
126
+ }
127
+ if (missingCli) {
128
+ await run(toolchain.packageManager, [...INSTALL_ARGS[toolchain.packageManager](true), installSpec(missingCli)], { cwd: appDir, verbose: true });
129
+ }
130
+ // Native code only reaches the Android and iOS projects through cap sync, so
131
+ // an install without it looks successful and fails on a device.
132
+ if (!flags["skip-sync"]) {
133
+ const { capacitor } = lookupTools(appDir);
134
+ if (capacitor.bin) {
135
+ log.step("cap sync");
136
+ await run(capacitor.bin, ["sync"], { cwd: appDir, verbose: true });
137
+ }
138
+ else {
139
+ log.warn(`@capacitor/cli is not installed, so the native projects were not synced. ` +
140
+ `Run "npx cap sync" once it is - without it the new plugins exist in ` +
141
+ `JavaScript only.`);
142
+ }
143
+ }
144
+ log.success("Installed.");
145
+ this.reportNextSteps(appDir);
146
+ }
147
+ /** The two edits and two commands that remain. Both are easy to forget. */
148
+ reportNextSteps(appDir) {
149
+ const hasProject = fs.existsSync(path.join(appDir, ".capuchoo", "project.json")) ||
150
+ fs.existsSync(path.join(appDir, ".capucho", "project.json"));
151
+ note([
152
+ `1. Call notifyAppReady() first in your entry file:`,
153
+ ` import { notifyAppReady } from "@capuchoo/updater";`,
154
+ ` void notifyAppReady();`,
155
+ ``,
156
+ `2. Configure the plugin in capacitor.config.ts:`,
157
+ ` import { capuchooUpdaterConfig } from "@capuchoo/updater/capacitor";`,
158
+ ` plugins: { CapacitorUpdater: capuchooUpdaterConfig({ apiUrl, channel }) }`,
159
+ ``,
160
+ hasProject
161
+ ? `3. capuchoo deploy ota --channel <name>`
162
+ : `3. capuchoo auth login && capuchoo init`,
163
+ ].join("\n"), "Next");
164
+ this.log(chalk.dim(" notifyAppReady() is not optional: the plugin rolls back to the previous\n" +
165
+ " bundle if it does not hear it, so an update installs and then reverts.\n"));
166
+ }
167
+ }
168
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}