@miosa/cli 0.2.0 → 1.0.1

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 (55) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/bin/miosa.js +20 -1
  3. package/dist/bin/miosa.js.map +1 -1
  4. package/dist/client.d.ts +2 -0
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +19 -0
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands/billing.d.ts +3 -0
  9. package/dist/commands/billing.d.ts.map +1 -0
  10. package/dist/commands/billing.js +211 -0
  11. package/dist/commands/billing.js.map +1 -0
  12. package/dist/commands/builds.d.ts +3 -0
  13. package/dist/commands/builds.d.ts.map +1 -0
  14. package/dist/commands/builds.js +198 -0
  15. package/dist/commands/builds.js.map +1 -0
  16. package/dist/commands/databases.d.ts.map +1 -1
  17. package/dist/commands/databases.js +159 -1
  18. package/dist/commands/databases.js.map +1 -1
  19. package/dist/commands/env.d.ts +3 -0
  20. package/dist/commands/env.d.ts.map +1 -0
  21. package/dist/commands/env.js +176 -0
  22. package/dist/commands/env.js.map +1 -0
  23. package/dist/commands/logs.d.ts.map +1 -1
  24. package/dist/commands/logs.js +123 -45
  25. package/dist/commands/logs.js.map +1 -1
  26. package/dist/commands/regions.d.ts.map +1 -1
  27. package/dist/commands/regions.js +37 -1
  28. package/dist/commands/regions.js.map +1 -1
  29. package/dist/commands/releases.d.ts.map +1 -1
  30. package/dist/commands/releases.js +67 -0
  31. package/dist/commands/releases.js.map +1 -1
  32. package/dist/commands/rollback.d.ts +3 -0
  33. package/dist/commands/rollback.d.ts.map +1 -0
  34. package/dist/commands/rollback.js +62 -0
  35. package/dist/commands/rollback.js.map +1 -0
  36. package/dist/commands/scale.d.ts +3 -0
  37. package/dist/commands/scale.d.ts.map +1 -0
  38. package/dist/commands/scale.js +61 -0
  39. package/dist/commands/scale.js.map +1 -0
  40. package/dist/commands/storage.d.ts.map +1 -1
  41. package/dist/commands/storage.js +198 -0
  42. package/dist/commands/storage.js.map +1 -1
  43. package/dist/commands/teams.d.ts +3 -0
  44. package/dist/commands/teams.d.ts.map +1 -0
  45. package/dist/commands/teams.js +171 -0
  46. package/dist/commands/teams.js.map +1 -0
  47. package/dist/commands/templates.d.ts +3 -0
  48. package/dist/commands/templates.d.ts.map +1 -0
  49. package/dist/commands/templates.js +266 -0
  50. package/dist/commands/templates.js.map +1 -0
  51. package/dist/update-check.d.ts +13 -0
  52. package/dist/update-check.d.ts.map +1 -0
  53. package/dist/update-check.js +91 -0
  54. package/dist/update-check.js.map +1 -0
  55. package/package.json +3 -2
@@ -4,6 +4,37 @@ import { MiosaClient, parseSse } from "../client.js";
4
4
  import { UserError } from "../errors.js";
5
5
  import { handleError } from "./util.js";
6
6
  import { resolveDeploymentId } from "./project.js";
7
+ /**
8
+ * Auto-detect whether a resource ID belongs to a deployment, computer, or sandbox
9
+ * by probing each API in order of likelihood. Falls back to deployment logs.
10
+ */
11
+ async function detectResource(client, resourceId) {
12
+ // Try deployment first (most common for `miosa logs`)
13
+ try {
14
+ await client.getDeployment(resourceId);
15
+ return { kind: "deployment", id: resourceId };
16
+ }
17
+ catch {
18
+ // not a deployment
19
+ }
20
+ // Try computer
21
+ try {
22
+ await client.apiGet(`/api/v1/computers/${encodeURIComponent(resourceId)}`);
23
+ return { kind: "computer", id: resourceId };
24
+ }
25
+ catch {
26
+ // not a computer
27
+ }
28
+ // Try sandbox
29
+ try {
30
+ await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(resourceId)}`);
31
+ return { kind: "sandbox", id: resourceId };
32
+ }
33
+ catch {
34
+ // not a sandbox
35
+ }
36
+ throw new UserError(`Resource not found: ${resourceId}`, "Pass a deployment name/ID, computer ID, or sandbox ID.");
37
+ }
7
38
  async function resolveAppId(client, appArg) {
8
39
  if (!appArg)
9
40
  return resolveDeploymentId();
@@ -19,72 +50,119 @@ async function resolveAppId(client, appArg) {
19
50
  return app.id;
20
51
  }
21
52
  }
22
- function printMachineLogs(payload) {
53
+ function printMachineLogs(payload, json) {
54
+ if (json) {
55
+ console.log(JSON.stringify(payload, null, 2));
56
+ return;
57
+ }
23
58
  if (Array.isArray(payload)) {
24
59
  for (const row of payload)
25
60
  console.log(JSON.stringify(row));
26
61
  return;
27
62
  }
28
63
  if (payload && typeof payload === "object" && "data" in payload) {
29
- printMachineLogs(payload.data);
64
+ printMachineLogs(payload.data, json);
30
65
  return;
31
66
  }
32
67
  console.log(JSON.stringify(payload, null, 2));
33
68
  }
69
+ async function streamSse(res) {
70
+ for await (const event of parseSse(res.body)) {
71
+ switch (event.type) {
72
+ case "stdout":
73
+ process.stdout.write(event.data);
74
+ break;
75
+ case "stderr":
76
+ process.stderr.write(chalk.red(event.data));
77
+ break;
78
+ case "error":
79
+ console.error(chalk.red(event.message));
80
+ break;
81
+ case "done":
82
+ return;
83
+ case "unknown":
84
+ try {
85
+ const parsed = JSON.parse(event.raw);
86
+ if (typeof parsed["line"] === "string") {
87
+ const line = parsed["line"];
88
+ if (parsed["stream"] === "stderr") {
89
+ process.stderr.write(chalk.red(line) + "\n");
90
+ }
91
+ else {
92
+ process.stdout.write(line + "\n");
93
+ }
94
+ }
95
+ }
96
+ catch {
97
+ // Ignore malformed stream frames.
98
+ }
99
+ break;
100
+ default:
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ // ── register ──────────────────────────────────────────────────────────────────
34
106
  export function register(program) {
35
107
  program
36
- .command("logs [app]")
37
- .description("Stream app logs or fetch machine logs")
38
- .option("--machine <id>", "Fetch logs for a machine/computer")
39
- .option("--json", "Output raw JSON for machine log snapshots")
40
- .action(async (app, opts) => {
108
+ .command("logs [resource-id]")
109
+ .description("Stream logs — auto-detects computer, deployment, or sandbox by ID")
110
+ .option("--machine <id>", "Explicitly fetch logs for a computer/machine")
111
+ .option("--sandbox <id>", "Explicitly fetch logs for a sandbox")
112
+ .option("--json", "Output raw JSON")
113
+ .addHelpText("after", `
114
+ Examples:
115
+ miosa logs Stream logs for linked deployment
116
+ miosa logs <deployment-id> Stream deployment logs
117
+ miosa logs <computer-id> Stream computer logs (auto-detected)
118
+ miosa logs <sandbox-id> Stream sandbox logs (auto-detected)
119
+ miosa logs --machine <id> Explicit computer logs
120
+ miosa logs --sandbox <id> Explicit sandbox logs
121
+ `)
122
+ .action(async (resourceId, opts) => {
41
123
  try {
42
124
  const client = new MiosaClient(loadConfig());
125
+ // ── Explicit computer flag ────────────────────────────────────────
43
126
  if (opts.machine) {
44
127
  const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(opts.machine)}/logs`);
45
- if (opts.json)
46
- console.log(JSON.stringify(payload, null, 2));
47
- else
48
- printMachineLogs(payload);
128
+ printMachineLogs(payload, opts.json ?? false);
49
129
  return;
50
130
  }
51
- const deploymentId = await resolveAppId(client, app);
52
- console.log(chalk.dim(`Streaming logs for ${deploymentId}...`));
53
- const res = await client.streamDeploymentLogs(deploymentId);
54
- for await (const event of parseSse(res.body)) {
55
- switch (event.type) {
56
- case "stdout":
57
- process.stdout.write(event.data);
58
- break;
59
- case "stderr":
60
- process.stderr.write(chalk.red(event.data));
61
- break;
62
- case "error":
63
- console.error(chalk.red(event.message));
64
- break;
65
- case "done":
131
+ // ── Explicit sandbox flag ─────────────────────────────────────────
132
+ if (opts.sandbox) {
133
+ const payload = await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(opts.sandbox)}/logs`);
134
+ printMachineLogs(payload, opts.json ?? false);
135
+ return;
136
+ }
137
+ // ── Auto-detect resource kind ─────────────────────────────────────
138
+ if (resourceId) {
139
+ const hint = await detectResource(client, resourceId);
140
+ switch (hint.kind) {
141
+ case "computer": {
142
+ console.log(chalk.dim(`Fetching computer logs for ${hint.id}...`));
143
+ const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(hint.id)}/logs`);
144
+ printMachineLogs(payload, opts.json ?? false);
66
145
  return;
67
- case "unknown":
68
- try {
69
- const parsed = JSON.parse(event.raw);
70
- if (typeof parsed["line"] === "string") {
71
- const line = parsed["line"];
72
- if (parsed["stream"] === "stderr") {
73
- process.stderr.write(chalk.red(line) + "\n");
74
- }
75
- else {
76
- process.stdout.write(line + "\n");
77
- }
78
- }
79
- }
80
- catch {
81
- // Ignore malformed stream frames.
82
- }
83
- break;
84
- default:
85
- break;
146
+ }
147
+ case "sandbox": {
148
+ console.log(chalk.dim(`Fetching sandbox logs for ${hint.id}...`));
149
+ const payload = await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(hint.id)}/logs`);
150
+ printMachineLogs(payload, opts.json ?? false);
151
+ return;
152
+ }
153
+ case "deployment": {
154
+ console.log(chalk.dim(`Streaming deployment logs for ${hint.id}...`));
155
+ const res = await client.streamDeploymentLogs(hint.id);
156
+ await streamSse(res);
157
+ return;
158
+ }
86
159
  }
87
160
  }
161
+ // ── No ID — fall back to .miosa.json linked deployment ────────────
162
+ const deploymentId = await resolveAppId(client, undefined);
163
+ console.log(chalk.dim(`Streaming logs for ${deploymentId}...`));
164
+ const res = await client.streamDeploymentLogs(deploymentId);
165
+ await streamSse(res);
88
166
  }
89
167
  catch (err) {
90
168
  handleError(err);
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../src/commands/regions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD/C"}
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../src/commands/regions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkG/C"}
@@ -55,7 +55,7 @@ export function register(program) {
55
55
  }
56
56
  const regions = program
57
57
  .command("regions")
58
- .description("List available MIOSA regions")
58
+ .description("List or inspect MIOSA regions")
59
59
  .option("--json", "Output raw JSON")
60
60
  .action(list);
61
61
  regions
@@ -63,5 +63,41 @@ export function register(program) {
63
63
  .description("List available MIOSA regions")
64
64
  .option("--json", "Output raw JSON")
65
65
  .action(list);
66
+ regions
67
+ .command("get <region-id>")
68
+ .description("Show details for a single region")
69
+ .option("--json", "Output raw JSON")
70
+ .action(async (regionId, opts) => {
71
+ try {
72
+ const config = loadConfig();
73
+ const client = new MiosaClient(config);
74
+ const spinner = spin("Fetching region...");
75
+ const raw = await client.apiGet(`/api/v1/regions/${encodeURIComponent(regionId)}`);
76
+ spinner.stop();
77
+ // Unwrap { data: Region } envelope if present
78
+ const region = raw && typeof raw === "object" && "data" in raw
79
+ ? raw.data
80
+ : raw;
81
+ if (opts.json) {
82
+ console.log(JSON.stringify(region, null, 2));
83
+ return;
84
+ }
85
+ console.log();
86
+ console.log(` ${chalk.bold("ID")} ${region.id}`);
87
+ console.log(` ${chalk.bold("Name")} ${region.label ?? region.name ?? region.id}`);
88
+ console.log(` ${chalk.bold("Status")} ${fmtStatus(region)}`);
89
+ console.log(` ${chalk.bold("Nodes")} ${region.active_nodes ?? 0}`);
90
+ if (region.small_slots_free !== undefined) {
91
+ console.log(` ${chalk.bold("Small free")} ${region.small_slots_free}`);
92
+ }
93
+ if (region.headroom) {
94
+ console.log(` ${chalk.bold("Headroom")} ${JSON.stringify(region.headroom)}`);
95
+ }
96
+ console.log();
97
+ }
98
+ catch (err) {
99
+ handleError(err);
100
+ }
101
+ });
66
102
  }
67
103
  //# sourceMappingURL=regions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/commands/regions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/commands/regions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"releases.d.ts","sourceRoot":"","sources":["../../src/commands/releases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuK/C"}
1
+ {"version":3,"file":"releases.d.ts","sourceRoot":"","sources":["../../src/commands/releases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6DzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgR/C"}
@@ -123,6 +123,73 @@ export function register(program) {
123
123
  handleError(err);
124
124
  }
125
125
  });
126
+ // ── releases get (alias for show) ──────────────────────────────────────────
127
+ releases
128
+ .command("get <deployment-id> <release-id>")
129
+ .description("Get a release by deployment ID and release ID")
130
+ .option("--json", "Output as JSON")
131
+ .action(async (deploymentId, releaseId, opts) => {
132
+ try {
133
+ const client = new MiosaClient(loadConfig());
134
+ const app = await resolveApp(client, deploymentId);
135
+ const release = await client.getBuild(app.id, releaseId);
136
+ if (opts.json) {
137
+ console.log(JSON.stringify(release, null, 2));
138
+ return;
139
+ }
140
+ console.log();
141
+ console.log(` ${chalk.bold("Release")} ${release.id}`);
142
+ console.log(` ${chalk.bold("App")} ${app.name} (${app.id})`);
143
+ console.log(` ${chalk.bold("State")} ${stateColor(release.state)}`);
144
+ console.log(` ${chalk.bold("Commit")} ${release.commit_sha ?? chalk.dim("none")}`);
145
+ if (release.commit_message) {
146
+ console.log(` ${chalk.bold("Message")} ${release.commit_message}`);
147
+ }
148
+ if (release.error_message) {
149
+ console.log(` ${chalk.bold("Error")} ${chalk.red(release.error_message)}`);
150
+ }
151
+ console.log(` ${chalk.bold("Created")} ${release.created_at}`);
152
+ console.log();
153
+ }
154
+ catch (err) {
155
+ handleError(err);
156
+ }
157
+ });
158
+ // ── releases promote ────────────────────────────────────────────────────────
159
+ releases
160
+ .command("promote <deployment-id> <version-id>")
161
+ .description("Promote a version to active")
162
+ .option("-y, --yes", "Skip confirmation prompt")
163
+ .option("--json", "Output as JSON")
164
+ .action(async (deploymentId, versionId, opts) => {
165
+ try {
166
+ const client = new MiosaClient(loadConfig());
167
+ const app = await resolveApp(client, deploymentId);
168
+ if (!opts.yes) {
169
+ const { default: inquirer } = await import("inquirer");
170
+ const { ok } = await inquirer.prompt([
171
+ {
172
+ type: "confirm",
173
+ name: "ok",
174
+ message: `Promote version ${shortId(versionId)} on ${app.name}?`,
175
+ default: false,
176
+ },
177
+ ]);
178
+ if (!ok) {
179
+ console.log(chalk.dim("Cancelled."));
180
+ return;
181
+ }
182
+ }
183
+ const result = await client.apiPost(`/api/v1/deployments/${encodeURIComponent(app.id)}/versions/${encodeURIComponent(versionId)}/promote`);
184
+ console.log(chalk.green(`Version ${shortId(versionId)} promoted on ${app.name}.`));
185
+ if (opts.json) {
186
+ console.log(JSON.stringify(result, null, 2));
187
+ }
188
+ }
189
+ catch (err) {
190
+ handleError(err);
191
+ }
192
+ });
126
193
  releases
127
194
  .command("rollback <release-id>")
128
195
  .description("Rollback to a release")
@@ -1 +1 @@
1
- {"version":3,"file":"releases.js","sourceRoot":"","sources":["../../src/commands/releases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"releases.js","sourceRoot":"","sources":["../../src/commands/releases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function register(program: Command): void;
3
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkE/C"}
@@ -0,0 +1,62 @@
1
+ import chalk from "chalk";
2
+ import { loadConfig } from "../config.js";
3
+ import { MiosaClient } from "../client.js";
4
+ import { spin } from "../ui/spinner.js";
5
+ import { handleError } from "./util.js";
6
+ import { resolveDeploymentId } from "./project.js";
7
+ import { printObject } from "./enterprise-util.js";
8
+ // ── register ──────────────────────────────────────────────────────────────────
9
+ export function register(program) {
10
+ program
11
+ .command("rollback <deployment-id>")
12
+ .description("Roll a deployment back to a previous version")
13
+ .option("--to <version-id>", "Specific version/build ID to roll back to")
14
+ .option("-y, --yes", "Skip confirmation prompt")
15
+ .option("--json", "Output as JSON")
16
+ .addHelpText("after", `
17
+ Examples:
18
+ miosa rollback <deployment-id>
19
+ miosa rollback <deployment-id> --to <build-id>
20
+ miosa rollback <deployment-id> --to <build-id> --yes
21
+ `)
22
+ .action(async (deploymentId, opts) => {
23
+ try {
24
+ const client = new MiosaClient(loadConfig());
25
+ const id = resolveDeploymentId(deploymentId);
26
+ if (!opts.yes) {
27
+ const target = opts.to
28
+ ? `build ${opts.to.slice(0, 8)}`
29
+ : "the previous build";
30
+ const { default: inquirer } = await import("inquirer");
31
+ const { ok } = await inquirer.prompt([
32
+ {
33
+ type: "confirm",
34
+ name: "ok",
35
+ message: chalk.yellow(`Roll back deployment ${id.slice(0, 8)} to ${target}?`),
36
+ default: false,
37
+ },
38
+ ]);
39
+ if (!ok) {
40
+ console.log(chalk.dim(" Cancelled."));
41
+ process.exit(0);
42
+ }
43
+ }
44
+ const spinner = spin("Initiating rollback...");
45
+ const body = {};
46
+ if (opts.to)
47
+ body["version_id"] = opts.to;
48
+ const result = await client.apiPost(`/api/v1/deployments/${encodeURIComponent(id)}/rollback`, body);
49
+ spinner.succeed("Rollback initiated");
50
+ if (opts.json) {
51
+ console.log(JSON.stringify(result, null, 2));
52
+ }
53
+ else if (result && typeof result === "object") {
54
+ printObject(result);
55
+ }
56
+ }
57
+ catch (err) {
58
+ handleError(err);
59
+ }
60
+ });
61
+ }
62
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function register(program: Command): void;
3
+ //# sourceMappingURL=scale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale.d.ts","sourceRoot":"","sources":["../../src/commands/scale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyE/C"}
@@ -0,0 +1,61 @@
1
+ import { loadConfig } from "../config.js";
2
+ import { MiosaClient } from "../client.js";
3
+ import { UserError } from "../errors.js";
4
+ import { spin } from "../ui/spinner.js";
5
+ import { handleError } from "./util.js";
6
+ import { resolveDeploymentId } from "./project.js";
7
+ import { printObject } from "./enterprise-util.js";
8
+ // ── register ──────────────────────────────────────────────────────────────────
9
+ export function register(program) {
10
+ program
11
+ .command("scale <deployment-id>")
12
+ .description("Scale or resize a deployment")
13
+ .option("--instances <n>", "Target instance count")
14
+ .option("--size <size>", "Instance size (e.g. small, medium, large)")
15
+ .option("--json", "Output as JSON")
16
+ .addHelpText("after", `
17
+ Examples:
18
+ miosa scale <id> --instances 3
19
+ miosa scale <id> --size medium
20
+ miosa scale <id> --instances 2 --size large
21
+ `)
22
+ .action(async (deploymentId, opts) => {
23
+ try {
24
+ if (!opts.instances && !opts.size) {
25
+ throw new UserError("Specify at least --instances or --size.", "Example: miosa scale <id> --instances 2");
26
+ }
27
+ const client = new MiosaClient(loadConfig());
28
+ const id = resolveDeploymentId(deploymentId);
29
+ if (opts.instances !== undefined) {
30
+ const n = Number(opts.instances);
31
+ if (!Number.isInteger(n) || n < 0) {
32
+ throw new UserError(`--instances must be a non-negative integer, got: ${opts.instances}`);
33
+ }
34
+ const spinner = spin(`Scaling to ${n} instance(s)...`);
35
+ const result = await client.apiPost(`/api/v1/deployments/${encodeURIComponent(id)}/scale`, { instances: n });
36
+ spinner.succeed(`Scaled to ${n} instance(s)`);
37
+ if (opts.json) {
38
+ console.log(JSON.stringify(result, null, 2));
39
+ }
40
+ else if (result && typeof result === "object") {
41
+ printObject(result);
42
+ }
43
+ }
44
+ if (opts.size !== undefined) {
45
+ const spinner = spin(`Resizing to ${opts.size}...`);
46
+ const result = await client.apiPost(`/api/v1/deployments/${encodeURIComponent(id)}/resize`, { size: opts.size });
47
+ spinner.succeed(`Resized to ${opts.size}`);
48
+ if (opts.json) {
49
+ console.log(JSON.stringify(result, null, 2));
50
+ }
51
+ else if (result && typeof result === "object") {
52
+ printObject(result);
53
+ }
54
+ }
55
+ }
56
+ catch (err) {
57
+ handleError(err);
58
+ }
59
+ });
60
+ }
61
+ //# sourceMappingURL=scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale.js","sourceRoot":"","sources":["../../src/commands/scale.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/commands/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0L/C"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/commands/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4EzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAib/C"}