@lizard-build/cli 0.3.60 → 0.3.61
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/scale.d.ts +1 -1
- package/dist/commands/scale.js +15 -10
- package/dist/commands/scale.js.map +1 -1
- package/dist/lib/updater.d.ts +1 -1
- package/dist/lib/updater.js +1 -1
- package/package.json +1 -1
- package/src/commands/scale.ts +15 -10
- package/src/lib/updater.ts +1 -1
package/dist/commands/scale.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Command } from "commander";
|
|
|
3
3
|
* `lizard scale` — service scaling.
|
|
4
4
|
* --replicas <n> change replica count (1-10) — apps only
|
|
5
5
|
* --cpu <cores> CPU cap; allowed: 1, 2, 4
|
|
6
|
-
* --memory <mb> memory cap;
|
|
6
|
+
* --memory <mb> memory cap in MB; any whole value 128-8192
|
|
7
7
|
* --storage <mb> data volume size; addons only, grow-only;
|
|
8
8
|
* allowed: 512, 1024, 2048, 4096, 8192, 16384
|
|
9
9
|
*/
|
package/dist/commands/scale.js
CHANGED
|
@@ -2,13 +2,18 @@ import chalk from "chalk";
|
|
|
2
2
|
import { api, withScope } from "../lib/api.js";
|
|
3
3
|
import { getActiveServiceWithKind, resolveProjectScope } from "../lib/resolve.js";
|
|
4
4
|
import { success, isJSONMode, printJSON } from "../lib/format.js";
|
|
5
|
-
// Discrete tiers the dashboard
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
5
|
+
// Discrete tiers the dashboard exposes (CPU_OPTIONS / STORAGE in lizard-client).
|
|
6
|
+
// The API and node-agent accept other values, but anything off the tier list
|
|
7
|
+
// lands in DB as a string the UI selector can't snap to — the row shows raw
|
|
8
|
+
// "3000m" and the selector falls to index 0. Mirror the UI tiers so the CLI and
|
|
9
|
+
// dashboard stay in lockstep.
|
|
10
10
|
const ALLOWED_CPU_CORES = [1, 2, 4];
|
|
11
|
-
|
|
11
|
+
// Memory is a free-range slider on the dashboard (MemorySliderRow): 1 MB step,
|
|
12
|
+
// 128 MB floor, 8192 MB ceiling. Accept any whole MB in that range — no tier
|
|
13
|
+
// list. Emitted k8s string stays canonical (mbToK8s → Gi when divisible by
|
|
14
|
+
// 1024), so a CLI edit produces the same stored value as the slider.
|
|
15
|
+
const MEM_MIN_MB = 128;
|
|
16
|
+
const MEM_MAX_MB = 8192;
|
|
12
17
|
// Storage tiers match the addon size selector on the dashboard. Addon-only —
|
|
13
18
|
// apps don't have a resizable data volume on this path.
|
|
14
19
|
const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384];
|
|
@@ -16,7 +21,7 @@ const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384];
|
|
|
16
21
|
* `lizard scale` — service scaling.
|
|
17
22
|
* --replicas <n> change replica count (1-10) — apps only
|
|
18
23
|
* --cpu <cores> CPU cap; allowed: 1, 2, 4
|
|
19
|
-
* --memory <mb> memory cap;
|
|
24
|
+
* --memory <mb> memory cap in MB; any whole value 128-8192
|
|
20
25
|
* --storage <mb> data volume size; addons only, grow-only;
|
|
21
26
|
* allowed: 512, 1024, 2048, 4096, 8192, 16384
|
|
22
27
|
*/
|
|
@@ -29,7 +34,7 @@ export function registerScale(program) {
|
|
|
29
34
|
.option("-p, --project <id>", "Project name, slug, or ID")
|
|
30
35
|
.option("--replicas <n>", "Number of replicas (1-10), apps only", parseIntOption)
|
|
31
36
|
.option("--cpu <cores>", `CPU cap, whole cores (allowed: ${ALLOWED_CPU_CORES.join(", ")})`, parseIntOption)
|
|
32
|
-
.option("--memory <mb>", `Memory cap in MB (
|
|
37
|
+
.option("--memory <mb>", `Memory cap in MB (${MEM_MIN_MB}-${MEM_MAX_MB}, 1 MB steps)`, parseIntOption)
|
|
33
38
|
.option("--storage <mb>", `Data volume size in MB, addons only, grow-only (allowed: ${ALLOWED_STORAGE_MB.join(", ")})`, parseIntOption)
|
|
34
39
|
.action(async (serviceArg, opts, _cmd) => {
|
|
35
40
|
const { projectId, scope } = await resolveProjectScope(opts.project);
|
|
@@ -46,8 +51,8 @@ export function registerScale(program) {
|
|
|
46
51
|
if (opts.cpu !== undefined && !ALLOWED_CPU_CORES.includes(opts.cpu)) {
|
|
47
52
|
throw new Error(`--cpu ${opts.cpu} not supported. Allowed: ${ALLOWED_CPU_CORES.join(", ")} cores.`);
|
|
48
53
|
}
|
|
49
|
-
if (opts.memory !== undefined &&
|
|
50
|
-
throw new Error(`--memory ${opts.memory}
|
|
54
|
+
if (opts.memory !== undefined && (opts.memory < MEM_MIN_MB || opts.memory > MEM_MAX_MB)) {
|
|
55
|
+
throw new Error(`--memory ${opts.memory} out of range. Allowed: ${MEM_MIN_MB}-${MEM_MAX_MB} MB.`);
|
|
51
56
|
}
|
|
52
57
|
if (opts.storage !== undefined && !ALLOWED_STORAGE_MB.includes(opts.storage)) {
|
|
53
58
|
throw new Error(`--storage ${opts.storage} not supported. Allowed: ${ALLOWED_STORAGE_MB.join(", ")} MB.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scale.js","sourceRoot":"","sources":["../../src/commands/scale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAsB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"scale.js","sourceRoot":"","sources":["../../src/commands/scale.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.61";
|
|
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. */
|
package/package.json
CHANGED
package/src/commands/scale.ts
CHANGED
|
@@ -4,13 +4,18 @@ import { api, withScope, type ResourceScope } from "../lib/api.js";
|
|
|
4
4
|
import { getActiveServiceWithKind, resolveProjectScope } from "../lib/resolve.js";
|
|
5
5
|
import { success, isJSONMode, printJSON } from "../lib/format.js";
|
|
6
6
|
|
|
7
|
-
// Discrete tiers the dashboard
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
7
|
+
// Discrete tiers the dashboard exposes (CPU_OPTIONS / STORAGE in lizard-client).
|
|
8
|
+
// The API and node-agent accept other values, but anything off the tier list
|
|
9
|
+
// lands in DB as a string the UI selector can't snap to — the row shows raw
|
|
10
|
+
// "3000m" and the selector falls to index 0. Mirror the UI tiers so the CLI and
|
|
11
|
+
// dashboard stay in lockstep.
|
|
12
12
|
const ALLOWED_CPU_CORES = [1, 2, 4] as const;
|
|
13
|
-
|
|
13
|
+
// Memory is a free-range slider on the dashboard (MemorySliderRow): 1 MB step,
|
|
14
|
+
// 128 MB floor, 8192 MB ceiling. Accept any whole MB in that range — no tier
|
|
15
|
+
// list. Emitted k8s string stays canonical (mbToK8s → Gi when divisible by
|
|
16
|
+
// 1024), so a CLI edit produces the same stored value as the slider.
|
|
17
|
+
const MEM_MIN_MB = 128;
|
|
18
|
+
const MEM_MAX_MB = 8192;
|
|
14
19
|
// Storage tiers match the addon size selector on the dashboard. Addon-only —
|
|
15
20
|
// apps don't have a resizable data volume on this path.
|
|
16
21
|
const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384] as const;
|
|
@@ -19,7 +24,7 @@ const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384] as const;
|
|
|
19
24
|
* `lizard scale` — service scaling.
|
|
20
25
|
* --replicas <n> change replica count (1-10) — apps only
|
|
21
26
|
* --cpu <cores> CPU cap; allowed: 1, 2, 4
|
|
22
|
-
* --memory <mb> memory cap;
|
|
27
|
+
* --memory <mb> memory cap in MB; any whole value 128-8192
|
|
23
28
|
* --storage <mb> data volume size; addons only, grow-only;
|
|
24
29
|
* allowed: 512, 1024, 2048, 4096, 8192, 16384
|
|
25
30
|
*/
|
|
@@ -32,7 +37,7 @@ export function registerScale(program: Command) {
|
|
|
32
37
|
.option("-p, --project <id>", "Project name, slug, or ID")
|
|
33
38
|
.option("--replicas <n>", "Number of replicas (1-10), apps only", parseIntOption)
|
|
34
39
|
.option("--cpu <cores>", `CPU cap, whole cores (allowed: ${ALLOWED_CPU_CORES.join(", ")})`, parseIntOption)
|
|
35
|
-
.option("--memory <mb>", `Memory cap in MB (
|
|
40
|
+
.option("--memory <mb>", `Memory cap in MB (${MEM_MIN_MB}-${MEM_MAX_MB}, 1 MB steps)`, parseIntOption)
|
|
36
41
|
.option("--storage <mb>", `Data volume size in MB, addons only, grow-only (allowed: ${ALLOWED_STORAGE_MB.join(", ")})`, parseIntOption)
|
|
37
42
|
.action(async (serviceArg: string | undefined, opts, _cmd) => {
|
|
38
43
|
const { projectId, scope } = await resolveProjectScope(opts.project);
|
|
@@ -55,9 +60,9 @@ export function registerScale(program: Command) {
|
|
|
55
60
|
`--cpu ${opts.cpu} not supported. Allowed: ${ALLOWED_CPU_CORES.join(", ")} cores.`,
|
|
56
61
|
);
|
|
57
62
|
}
|
|
58
|
-
if (opts.memory !== undefined &&
|
|
63
|
+
if (opts.memory !== undefined && (opts.memory < MEM_MIN_MB || opts.memory > MEM_MAX_MB)) {
|
|
59
64
|
throw new Error(
|
|
60
|
-
`--memory ${opts.memory}
|
|
65
|
+
`--memory ${opts.memory} out of range. Allowed: ${MEM_MIN_MB}-${MEM_MAX_MB} MB.`,
|
|
61
66
|
);
|
|
62
67
|
}
|
|
63
68
|
if (opts.storage !== undefined && !(ALLOWED_STORAGE_MB as readonly number[]).includes(opts.storage)) {
|
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.61";
|
|
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
|
|