@lizard-build/cli 0.3.95 → 0.3.96
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/commands/sandbox.js +4 -11
- package/dist/commands/sandbox.js.map +1 -1
- package/dist/commands/volume.js +7 -15
- package/dist/commands/volume.js.map +1 -1
- package/dist/lib/updater.d.ts +1 -1
- package/dist/lib/updater.js +1 -1
- package/dist/lib/volume.d.ts +29 -0
- package/dist/lib/volume.js +46 -0
- package/dist/lib/volume.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/sandbox.ts +4 -27
- package/src/commands/volume.ts +7 -35
- package/src/lib/updater.ts +1 -1
- package/src/lib/volume.ts +71 -0
package/dist/commands/sandbox.js
CHANGED
|
@@ -7,6 +7,7 @@ import * as p from "@clack/prompts";
|
|
|
7
7
|
import { api, getBaseURL, getRawText, streamSSE, withQuery, withScope } from "../lib/api.js";
|
|
8
8
|
import { getToken } from "../lib/auth.js";
|
|
9
9
|
import { resolveProjectScope } from "../lib/resolve.js";
|
|
10
|
+
import { resolveVolume } from "../lib/volume.js";
|
|
10
11
|
import { success, info, error, isJSONMode, printJSON, table, statusColor, timeAgo, isTTY } from "../lib/format.js";
|
|
11
12
|
const VALID_TEMPLATES = ["base", "code-interpreter-v1"];
|
|
12
13
|
function parseIntOption(v) {
|
|
@@ -22,16 +23,6 @@ function parseTimeoutOption(value) {
|
|
|
22
23
|
}
|
|
23
24
|
return timeout;
|
|
24
25
|
}
|
|
25
|
-
/** Resolve a volume by name or ID. Requires a project — volumes are project-scoped. */
|
|
26
|
-
async function resolveVolumeId(projectId, scope, nameOrId) {
|
|
27
|
-
const volumes = await api.get(withScope(`/api/projects/${projectId}/volumes`, scope));
|
|
28
|
-
const lower = nameOrId.toLowerCase();
|
|
29
|
-
const match = volumes.find((v) => v.id.toLowerCase() === lower || v.name.toLowerCase() === lower);
|
|
30
|
-
if (!match) {
|
|
31
|
-
throw new Error(`Volume "${nameOrId}" not found. Available: ${volumes.map((v) => v.name).join(", ") || "(none)"}`);
|
|
32
|
-
}
|
|
33
|
-
return match.id;
|
|
34
|
-
}
|
|
35
26
|
function printSandboxList(sandboxes) {
|
|
36
27
|
if (isJSONMode()) {
|
|
37
28
|
printJSON(sandboxes);
|
|
@@ -72,9 +63,11 @@ export function registerSandbox(program) {
|
|
|
72
63
|
// create a project-less sandbox.
|
|
73
64
|
const { projectId, scope } = await resolveProjectScope(opts.project);
|
|
74
65
|
const workspaceId = scope.workspaceId ?? undefined;
|
|
66
|
+
// Resolved server-side so a name is matched against this project only — see
|
|
67
|
+
// lib/volume.ts for why the old client-side .find() had to go.
|
|
75
68
|
let volumeId;
|
|
76
69
|
if (opts.volume) {
|
|
77
|
-
volumeId = await
|
|
70
|
+
volumeId = (await resolveVolume(projectId, scope, opts.volume)).id;
|
|
78
71
|
}
|
|
79
72
|
const spinner = isJSONMode() ? null : ora("Creating sandbox...").start();
|
|
80
73
|
let sandbox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/commands/sandbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/commands/sandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/volume.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
3
|
import { api, withScope } from "../lib/api.js";
|
|
4
|
+
import { assertValidVolumeName, resolveVolume } from "../lib/volume.js";
|
|
4
5
|
import { resolveProjectScope } from "../lib/resolve.js";
|
|
5
6
|
import { success, info, isJSONMode, printJSON, table, isTTY } from "../lib/format.js";
|
|
6
|
-
/** Resolve a volume by name or ID within a project. Mirrors resolveService. */
|
|
7
|
-
async function resolveVolume(projectId, scope, nameOrId) {
|
|
8
|
-
const volumes = await api.get(withScope(`/api/projects/${projectId}/volumes`, scope));
|
|
9
|
-
const lower = nameOrId.toLowerCase();
|
|
10
|
-
const match = volumes.find((v) => v.id.toLowerCase() === lower || v.name.toLowerCase() === lower);
|
|
11
|
-
if (!match) {
|
|
12
|
-
throw new Error(`Volume "${nameOrId}" not found. Available: ${volumes.map((v) => v.name).join(", ") || "(none)"}`);
|
|
13
|
-
}
|
|
14
|
-
return match;
|
|
15
|
-
}
|
|
16
7
|
function parseIntOption(v) {
|
|
17
8
|
const n = parseInt(v, 10);
|
|
18
9
|
if (Number.isNaN(n))
|
|
@@ -40,9 +31,10 @@ export function registerVolume(program) {
|
|
|
40
31
|
console.log("No volumes. Use `lizard volume create <name>`.");
|
|
41
32
|
return;
|
|
42
33
|
}
|
|
43
|
-
|
|
34
|
+
// The name is the key now — the ID is noise in a human-readable list and is
|
|
35
|
+
// still there in full under `--json`.
|
|
36
|
+
table(["Name", "Size", "Status", "Attached to"], volumes.map((v) => [
|
|
44
37
|
v.name,
|
|
45
|
-
chalk.dim(v.id),
|
|
46
38
|
`${v.sizeGb} GB`,
|
|
47
39
|
v.status,
|
|
48
40
|
v.attachedTo ? chalk.dim(v.attachedTo) : chalk.dim("—"),
|
|
@@ -55,6 +47,7 @@ export function registerVolume(program) {
|
|
|
55
47
|
.option("--size <gb>", "Size in GB (1-100, default 5)", parseIntOption)
|
|
56
48
|
.option("-p, --project <id>", "Project name, slug, or ID")
|
|
57
49
|
.action(async (name, opts) => {
|
|
50
|
+
assertValidVolumeName(name);
|
|
58
51
|
const { projectId, scope } = await resolveProjectScope(opts.project);
|
|
59
52
|
const sizeGb = opts.size ?? 5;
|
|
60
53
|
if (sizeGb < 1 || sizeGb > 100) {
|
|
@@ -68,8 +61,7 @@ export function registerVolume(program) {
|
|
|
68
61
|
return;
|
|
69
62
|
}
|
|
70
63
|
success(`Volume ${chalk.bold(created.name)} created (${created.sizeGb} GB)`);
|
|
71
|
-
info(chalk.dim(`
|
|
72
|
-
info(chalk.dim(` Attach it to a sandbox: lizard sandbox create --volume ${created.id}`));
|
|
64
|
+
info(chalk.dim(` Attach it to a sandbox: lizard sandbox create --volume ${created.name}`));
|
|
73
65
|
});
|
|
74
66
|
vol
|
|
75
67
|
.command("rm")
|
|
@@ -91,7 +83,7 @@ export function registerVolume(program) {
|
|
|
91
83
|
if (p.isCancel(ok) || !ok)
|
|
92
84
|
process.exit(5);
|
|
93
85
|
}
|
|
94
|
-
await api.delete(withScope(`/api/projects/${projectId}/volumes/${volume.
|
|
86
|
+
await api.delete(withScope(`/api/projects/${projectId}/volumes/${encodeURIComponent(volume.name)}`, scope));
|
|
95
87
|
if (isJSONMode()) {
|
|
96
88
|
printJSON({ id: volume.id, status: "deleted" });
|
|
97
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volume.js","sourceRoot":"","sources":["../../src/commands/volume.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAsB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"volume.js","sourceRoot":"","sources":["../../src/commands/volume.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/updater.d.ts
CHANGED
package/dist/lib/updater.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Readable } from "node:stream";
|
|
|
4
4
|
import { join, dirname } from "node:path";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import { spawn } from "node:child_process";
|
|
7
|
-
export const CURRENT_VERSION = "0.3.
|
|
7
|
+
export const CURRENT_VERSION = "0.3.96";
|
|
8
8
|
const RELEASES_API = "https://api.github.com/repos/lizard-build/lizard-cli/releases/latest";
|
|
9
9
|
const RELEASE_BASE = "https://github.com/lizard-build/lizard-cli/releases/latest/download";
|
|
10
10
|
/** Minimum gap between background update checks. */
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ResourceScope } from "./api.js";
|
|
2
|
+
export interface VolumeRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
sizeGb: number;
|
|
6
|
+
status: string;
|
|
7
|
+
attachedTo?: string | null;
|
|
8
|
+
createdAt?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A volume's name is its key inside a project (LIZARD-161), so it has to be a shape
|
|
12
|
+
* that survives a URL, a mount path and a shell argument. Validated here as well as
|
|
13
|
+
* on the server so a typo is reported before the request goes out.
|
|
14
|
+
*/
|
|
15
|
+
export declare const VOLUME_NAME_RE: RegExp;
|
|
16
|
+
export declare function assertValidVolumeName(name: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a volume by name or ID through the server.
|
|
19
|
+
*
|
|
20
|
+
* This used to be a client-side `.find()` over the project's volume list, duplicated
|
|
21
|
+
* in `volume.ts` and `sandbox.ts`. Nothing enforced name uniqueness back then, so with
|
|
22
|
+
* duplicates present it silently picked whichever row came back first — you asked for
|
|
23
|
+
* your volume and mounted someone else's. The server now resolves a name itself and
|
|
24
|
+
* names are unique per project.
|
|
25
|
+
*
|
|
26
|
+
* The list fallback is only for talking to a server older than that change; it refuses
|
|
27
|
+
* to guess when a name is ambiguous rather than repeating the original bug.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveVolume(projectId: string, scope: ResourceScope, nameOrId: string): Promise<VolumeRecord>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { api, withScope } from "./api.js";
|
|
2
|
+
/**
|
|
3
|
+
* A volume's name is its key inside a project (LIZARD-161), so it has to be a shape
|
|
4
|
+
* that survives a URL, a mount path and a shell argument. Validated here as well as
|
|
5
|
+
* on the server so a typo is reported before the request goes out.
|
|
6
|
+
*/
|
|
7
|
+
export const VOLUME_NAME_RE = /^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/;
|
|
8
|
+
export function assertValidVolumeName(name) {
|
|
9
|
+
if (VOLUME_NAME_RE.test(name))
|
|
10
|
+
return;
|
|
11
|
+
throw new Error(`Invalid volume name "${name}". Use lowercase letters, digits and dashes, ` +
|
|
12
|
+
`starting and ending with a letter or digit (max 64 chars) — e.g. "build-cache".`);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a volume by name or ID through the server.
|
|
16
|
+
*
|
|
17
|
+
* This used to be a client-side `.find()` over the project's volume list, duplicated
|
|
18
|
+
* in `volume.ts` and `sandbox.ts`. Nothing enforced name uniqueness back then, so with
|
|
19
|
+
* duplicates present it silently picked whichever row came back first — you asked for
|
|
20
|
+
* your volume and mounted someone else's. The server now resolves a name itself and
|
|
21
|
+
* names are unique per project.
|
|
22
|
+
*
|
|
23
|
+
* The list fallback is only for talking to a server older than that change; it refuses
|
|
24
|
+
* to guess when a name is ambiguous rather than repeating the original bug.
|
|
25
|
+
*/
|
|
26
|
+
export async function resolveVolume(projectId, scope, nameOrId) {
|
|
27
|
+
try {
|
|
28
|
+
return await api.get(withScope(`/api/projects/${projectId}/volumes/${encodeURIComponent(nameOrId)}`, scope));
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
if (e?.status && e.status !== 404)
|
|
32
|
+
throw e;
|
|
33
|
+
}
|
|
34
|
+
const volumes = await api.get(withScope(`/api/projects/${projectId}/volumes`, scope));
|
|
35
|
+
const lower = nameOrId.toLowerCase();
|
|
36
|
+
const matches = volumes.filter((v) => v.id.toLowerCase() === lower || v.name.toLowerCase() === lower);
|
|
37
|
+
if (matches.length > 1) {
|
|
38
|
+
throw new Error(`Volume "${nameOrId}" is ambiguous — ${matches.length} volumes in this project share that name ` +
|
|
39
|
+
`(${matches.map((v) => v.id).join(", ")}). Delete the duplicates, or pass the ID you want.`);
|
|
40
|
+
}
|
|
41
|
+
if (matches.length === 0) {
|
|
42
|
+
throw new Error(`Volume "${nameOrId}" not found. Available: ${volumes.map((v) => v.name).join(", ") || "(none)"}`);
|
|
43
|
+
}
|
|
44
|
+
return matches[0];
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=volume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volume.js","sourceRoot":"","sources":["../../src/lib/volume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAW9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAErE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO;IACtC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,+CAA+C;QACzE,iFAAiF,CACpF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,KAAoB,EACpB,QAAgB;IAEhB,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,GAAG,CAClB,SAAS,CAAC,iBAAiB,SAAS,YAAY,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CACvF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAC3B,SAAS,CAAC,iBAAiB,SAAS,UAAU,EAAE,KAAK,CAAC,CACvD,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CACtE,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,oBAAoB,OAAO,CAAC,MAAM,2CAA2C;YAC9F,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,2BAA2B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAClG,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lizard-build/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.96",
|
|
4
4
|
"description": "Lizard CLI — deploy apps, databases and sandboxes to Lizard (lizard.build) from your terminal or your coding agent. Detects Go, Node, Python, Rust, Ruby, PHP, Java and static sites; adds Managed Postgres, Managed Redis and Managed Object Storage in one command.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/commands/sandbox.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { Command } from "commander";
|
|
|
8
8
|
import { api, getBaseURL, getRawText, streamSSE, withQuery, withScope, type ResourceScope } from "../lib/api.js";
|
|
9
9
|
import { getToken } from "../lib/auth.js";
|
|
10
10
|
import { resolveProjectScope } from "../lib/resolve.js";
|
|
11
|
+
import { resolveVolume } from "../lib/volume.js";
|
|
11
12
|
import { success, info, error, isJSONMode, printJSON, table, statusColor, timeAgo, isTTY } from "../lib/format.js";
|
|
12
13
|
|
|
13
14
|
const VALID_TEMPLATES = ["base", "code-interpreter-v1"] as const;
|
|
@@ -27,11 +28,6 @@ interface SandboxRecord {
|
|
|
27
28
|
projectId?: string | null;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
interface VolumeRecord {
|
|
31
|
-
id: string;
|
|
32
|
-
name: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
31
|
function parseIntOption(v: string): number {
|
|
36
32
|
const n = parseInt(v, 10);
|
|
37
33
|
if (Number.isNaN(n)) throw new Error(`Invalid number: ${v}`);
|
|
@@ -46,27 +42,6 @@ function parseTimeoutOption(value: string): number {
|
|
|
46
42
|
return timeout;
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
/** Resolve a volume by name or ID. Requires a project — volumes are project-scoped. */
|
|
50
|
-
async function resolveVolumeId(
|
|
51
|
-
projectId: string,
|
|
52
|
-
scope: ResourceScope,
|
|
53
|
-
nameOrId: string,
|
|
54
|
-
): Promise<string> {
|
|
55
|
-
const volumes = await api.get<VolumeRecord[]>(
|
|
56
|
-
withScope(`/api/projects/${projectId}/volumes`, scope),
|
|
57
|
-
);
|
|
58
|
-
const lower = nameOrId.toLowerCase();
|
|
59
|
-
const match = volumes.find(
|
|
60
|
-
(v) => v.id.toLowerCase() === lower || v.name.toLowerCase() === lower,
|
|
61
|
-
);
|
|
62
|
-
if (!match) {
|
|
63
|
-
throw new Error(
|
|
64
|
-
`Volume "${nameOrId}" not found. Available: ${volumes.map((v) => v.name).join(", ") || "(none)"}`,
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
return match.id;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
45
|
function printSandboxList(sandboxes: SandboxRecord[]) {
|
|
71
46
|
if (isJSONMode()) {
|
|
72
47
|
printJSON(sandboxes);
|
|
@@ -114,9 +89,11 @@ export function registerSandbox(program: Command) {
|
|
|
114
89
|
const { projectId, scope } = await resolveProjectScope(opts.project);
|
|
115
90
|
const workspaceId = scope.workspaceId ?? undefined;
|
|
116
91
|
|
|
92
|
+
// Resolved server-side so a name is matched against this project only — see
|
|
93
|
+
// lib/volume.ts for why the old client-side .find() had to go.
|
|
117
94
|
let volumeId: string | undefined;
|
|
118
95
|
if (opts.volume) {
|
|
119
|
-
volumeId = await
|
|
96
|
+
volumeId = (await resolveVolume(projectId, scope, opts.volume)).id;
|
|
120
97
|
}
|
|
121
98
|
|
|
122
99
|
const spinner = isJSONMode() ? null : ora("Creating sandbox...").start();
|
package/src/commands/volume.ts
CHANGED
|
@@ -2,39 +2,10 @@ import chalk from "chalk";
|
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
import { api, withScope, type ResourceScope } from "../lib/api.js";
|
|
5
|
+
import { assertValidVolumeName, resolveVolume, type VolumeRecord } from "../lib/volume.js";
|
|
5
6
|
import { resolveProjectScope } from "../lib/resolve.js";
|
|
6
7
|
import { success, info, isJSONMode, printJSON, table, isTTY } from "../lib/format.js";
|
|
7
8
|
|
|
8
|
-
interface VolumeRecord {
|
|
9
|
-
id: string;
|
|
10
|
-
name: string;
|
|
11
|
-
sizeGb: number;
|
|
12
|
-
status: string;
|
|
13
|
-
attachedTo?: string | null;
|
|
14
|
-
createdAt?: number;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/** Resolve a volume by name or ID within a project. Mirrors resolveService. */
|
|
18
|
-
async function resolveVolume(
|
|
19
|
-
projectId: string,
|
|
20
|
-
scope: ResourceScope,
|
|
21
|
-
nameOrId: string,
|
|
22
|
-
): Promise<VolumeRecord> {
|
|
23
|
-
const volumes = await api.get<VolumeRecord[]>(
|
|
24
|
-
withScope(`/api/projects/${projectId}/volumes`, scope),
|
|
25
|
-
);
|
|
26
|
-
const lower = nameOrId.toLowerCase();
|
|
27
|
-
const match = volumes.find(
|
|
28
|
-
(v) => v.id.toLowerCase() === lower || v.name.toLowerCase() === lower,
|
|
29
|
-
);
|
|
30
|
-
if (!match) {
|
|
31
|
-
throw new Error(
|
|
32
|
-
`Volume "${nameOrId}" not found. Available: ${volumes.map((v) => v.name).join(", ") || "(none)"}`,
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
return match;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
9
|
function parseIntOption(v: string): number {
|
|
39
10
|
const n = parseInt(v, 10);
|
|
40
11
|
if (Number.isNaN(n)) throw new Error(`Invalid number: ${v}`);
|
|
@@ -68,11 +39,12 @@ export function registerVolume(program: Command) {
|
|
|
68
39
|
return;
|
|
69
40
|
}
|
|
70
41
|
|
|
42
|
+
// The name is the key now — the ID is noise in a human-readable list and is
|
|
43
|
+
// still there in full under `--json`.
|
|
71
44
|
table(
|
|
72
|
-
["Name", "
|
|
45
|
+
["Name", "Size", "Status", "Attached to"],
|
|
73
46
|
volumes.map((v) => [
|
|
74
47
|
v.name,
|
|
75
|
-
chalk.dim(v.id),
|
|
76
48
|
`${v.sizeGb} GB`,
|
|
77
49
|
v.status,
|
|
78
50
|
v.attachedTo ? chalk.dim(v.attachedTo) : chalk.dim("—"),
|
|
@@ -87,6 +59,7 @@ export function registerVolume(program: Command) {
|
|
|
87
59
|
.option("--size <gb>", "Size in GB (1-100, default 5)", parseIntOption)
|
|
88
60
|
.option("-p, --project <id>", "Project name, slug, or ID")
|
|
89
61
|
.action(async (name: string, opts) => {
|
|
62
|
+
assertValidVolumeName(name);
|
|
90
63
|
const { projectId, scope } = await resolveProjectScope(opts.project);
|
|
91
64
|
const sizeGb = opts.size ?? 5;
|
|
92
65
|
if (sizeGb < 1 || sizeGb > 100) {
|
|
@@ -104,8 +77,7 @@ export function registerVolume(program: Command) {
|
|
|
104
77
|
return;
|
|
105
78
|
}
|
|
106
79
|
success(`Volume ${chalk.bold(created.name)} created (${created.sizeGb} GB)`);
|
|
107
|
-
info(chalk.dim(`
|
|
108
|
-
info(chalk.dim(` Attach it to a sandbox: lizard sandbox create --volume ${created.id}`));
|
|
80
|
+
info(chalk.dim(` Attach it to a sandbox: lizard sandbox create --volume ${created.name}`));
|
|
109
81
|
});
|
|
110
82
|
|
|
111
83
|
vol
|
|
@@ -132,7 +104,7 @@ export function registerVolume(program: Command) {
|
|
|
132
104
|
if (p.isCancel(ok) || !ok) process.exit(5);
|
|
133
105
|
}
|
|
134
106
|
|
|
135
|
-
await api.delete(withScope(`/api/projects/${projectId}/volumes/${volume.
|
|
107
|
+
await api.delete(withScope(`/api/projects/${projectId}/volumes/${encodeURIComponent(volume.name)}`, scope));
|
|
136
108
|
|
|
137
109
|
if (isJSONMode()) {
|
|
138
110
|
printJSON({ id: volume.id, status: "deleted" });
|
package/src/lib/updater.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { join, dirname } from "node:path";
|
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import { spawn } from "node:child_process";
|
|
7
7
|
|
|
8
|
-
export const CURRENT_VERSION = "0.3.
|
|
8
|
+
export const CURRENT_VERSION = "0.3.96";
|
|
9
9
|
const RELEASES_API = "https://api.github.com/repos/lizard-build/lizard-cli/releases/latest";
|
|
10
10
|
const RELEASE_BASE = "https://github.com/lizard-build/lizard-cli/releases/latest/download";
|
|
11
11
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { api, withScope, type ResourceScope } from "./api.js";
|
|
2
|
+
|
|
3
|
+
export interface VolumeRecord {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
sizeGb: number;
|
|
7
|
+
status: string;
|
|
8
|
+
attachedTo?: string | null;
|
|
9
|
+
createdAt?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A volume's name is its key inside a project (LIZARD-161), so it has to be a shape
|
|
14
|
+
* that survives a URL, a mount path and a shell argument. Validated here as well as
|
|
15
|
+
* on the server so a typo is reported before the request goes out.
|
|
16
|
+
*/
|
|
17
|
+
export const VOLUME_NAME_RE = /^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/;
|
|
18
|
+
|
|
19
|
+
export function assertValidVolumeName(name: string): void {
|
|
20
|
+
if (VOLUME_NAME_RE.test(name)) return;
|
|
21
|
+
throw new Error(
|
|
22
|
+
`Invalid volume name "${name}". Use lowercase letters, digits and dashes, ` +
|
|
23
|
+
`starting and ending with a letter or digit (max 64 chars) — e.g. "build-cache".`,
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Resolve a volume by name or ID through the server.
|
|
29
|
+
*
|
|
30
|
+
* This used to be a client-side `.find()` over the project's volume list, duplicated
|
|
31
|
+
* in `volume.ts` and `sandbox.ts`. Nothing enforced name uniqueness back then, so with
|
|
32
|
+
* duplicates present it silently picked whichever row came back first — you asked for
|
|
33
|
+
* your volume and mounted someone else's. The server now resolves a name itself and
|
|
34
|
+
* names are unique per project.
|
|
35
|
+
*
|
|
36
|
+
* The list fallback is only for talking to a server older than that change; it refuses
|
|
37
|
+
* to guess when a name is ambiguous rather than repeating the original bug.
|
|
38
|
+
*/
|
|
39
|
+
export async function resolveVolume(
|
|
40
|
+
projectId: string,
|
|
41
|
+
scope: ResourceScope,
|
|
42
|
+
nameOrId: string,
|
|
43
|
+
): Promise<VolumeRecord> {
|
|
44
|
+
try {
|
|
45
|
+
return await api.get<VolumeRecord>(
|
|
46
|
+
withScope(`/api/projects/${projectId}/volumes/${encodeURIComponent(nameOrId)}`, scope),
|
|
47
|
+
);
|
|
48
|
+
} catch (e: any) {
|
|
49
|
+
if (e?.status && e.status !== 404) throw e;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const volumes = await api.get<VolumeRecord[]>(
|
|
53
|
+
withScope(`/api/projects/${projectId}/volumes`, scope),
|
|
54
|
+
);
|
|
55
|
+
const lower = nameOrId.toLowerCase();
|
|
56
|
+
const matches = volumes.filter(
|
|
57
|
+
(v) => v.id.toLowerCase() === lower || v.name.toLowerCase() === lower,
|
|
58
|
+
);
|
|
59
|
+
if (matches.length > 1) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Volume "${nameOrId}" is ambiguous — ${matches.length} volumes in this project share that name ` +
|
|
62
|
+
`(${matches.map((v) => v.id).join(", ")}). Delete the duplicates, or pass the ID you want.`,
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
if (matches.length === 0) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
`Volume "${nameOrId}" not found. Available: ${volumes.map((v) => v.name).join(", ") || "(none)"}`,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
return matches[0];
|
|
71
|
+
}
|