@scalebun/cli 1.10.2 → 1.12.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.
- package/lib/commands/ci-init.d.ts.map +1 -1
- package/lib/commands/ci-init.js +80 -2
- package/lib/commands/ci-init.js.map +1 -1
- package/lib/commands/doctor.d.ts.map +1 -1
- package/lib/commands/doctor.js +148 -3
- package/lib/commands/doctor.js.map +1 -1
- package/lib/commands/link.d.ts +16 -0
- package/lib/commands/link.d.ts.map +1 -0
- package/lib/commands/link.js +164 -0
- package/lib/commands/link.js.map +1 -0
- package/lib/commands/login.d.ts.map +1 -1
- package/lib/commands/login.js +29 -7
- package/lib/commands/login.js.map +1 -1
- package/lib/commands/ota-bundle.d.ts +15 -2
- package/lib/commands/ota-bundle.d.ts.map +1 -1
- package/lib/commands/ota-bundle.js +142 -12
- package/lib/commands/ota-bundle.js.map +1 -1
- package/lib/commands/ota-channels.d.ts.map +1 -1
- package/lib/commands/ota-channels.js +213 -21
- package/lib/commands/ota-channels.js.map +1 -1
- package/lib/commands/ota-delete-bundle.d.ts.map +1 -1
- package/lib/commands/ota-delete-bundle.js +15 -4
- package/lib/commands/ota-delete-bundle.js.map +1 -1
- package/lib/commands/ota-inspect.d.ts +3 -0
- package/lib/commands/ota-inspect.d.ts.map +1 -0
- package/lib/commands/ota-inspect.js +258 -0
- package/lib/commands/ota-inspect.js.map +1 -0
- package/lib/commands/ota-keys.d.ts +25 -0
- package/lib/commands/ota-keys.d.ts.map +1 -1
- package/lib/commands/ota-keys.js +329 -27
- package/lib/commands/ota-keys.js.map +1 -1
- package/lib/commands/ota-promote.d.ts +3 -0
- package/lib/commands/ota-promote.d.ts.map +1 -0
- package/lib/commands/ota-promote.js +194 -0
- package/lib/commands/ota-promote.js.map +1 -0
- package/lib/commands/ota-publish.d.ts.map +1 -1
- package/lib/commands/ota-publish.js +108 -38
- package/lib/commands/ota-publish.js.map +1 -1
- package/lib/commands/ota-rollout.d.ts.map +1 -1
- package/lib/commands/ota-rollout.js +212 -171
- package/lib/commands/ota-rollout.js.map +1 -1
- package/lib/commands/quickstart.d.ts.map +1 -1
- package/lib/commands/quickstart.js +110 -8
- package/lib/commands/quickstart.js.map +1 -1
- package/lib/commands/shell.d.ts +28 -0
- package/lib/commands/shell.d.ts.map +1 -0
- package/lib/commands/shell.js +512 -0
- package/lib/commands/shell.js.map +1 -0
- package/lib/index.js +140 -4
- package/lib/index.js.map +1 -1
- package/lib/ui/menu.d.ts +109 -0
- package/lib/ui/menu.d.ts.map +1 -0
- package/lib/ui/menu.js +314 -0
- package/lib/ui/menu.js.map +1 -0
- package/lib/utils/bundle.d.ts.map +1 -1
- package/lib/utils/bundle.js +7 -1
- package/lib/utils/bundle.js.map +1 -1
- package/lib/utils/context.d.ts +88 -0
- package/lib/utils/context.d.ts.map +1 -0
- package/lib/utils/context.js +247 -0
- package/lib/utils/context.js.map +1 -0
- package/lib/utils/credentials.d.ts +16 -0
- package/lib/utils/credentials.d.ts.map +1 -1
- package/lib/utils/credentials.js +14 -3
- package/lib/utils/credentials.js.map +1 -1
- package/lib/utils/guide.d.ts +63 -0
- package/lib/utils/guide.d.ts.map +1 -0
- package/lib/utils/guide.js +189 -0
- package/lib/utils/guide.js.map +1 -0
- package/lib/utils/output.d.ts +96 -0
- package/lib/utils/output.d.ts.map +1 -0
- package/lib/utils/output.js +135 -0
- package/lib/utils/output.js.map +1 -0
- package/lib/utils/prompt.d.ts +109 -6
- package/lib/utils/prompt.d.ts.map +1 -1
- package/lib/utils/prompt.js +222 -20
- package/lib/utils/prompt.js.map +1 -1
- package/lib/utils/provenance.d.ts +30 -0
- package/lib/utils/provenance.d.ts.map +1 -0
- package/lib/utils/provenance.js +157 -0
- package/lib/utils/provenance.js.map +1 -0
- package/lib/utils/resolve.d.ts +81 -0
- package/lib/utils/resolve.d.ts.map +1 -0
- package/lib/utils/resolve.js +139 -0
- package/lib/utils/resolve.js.map +1 -0
- package/lib/utils/sdkBin.d.ts +18 -0
- package/lib/utils/sdkBin.d.ts.map +1 -0
- package/lib/utils/sdkBin.js +76 -0
- package/lib/utils/sdkBin.js.map +1 -0
- package/lib/utils/ui.d.ts +10 -1
- package/lib/utils/ui.d.ts.map +1 -1
- package/lib/utils/ui.js +18 -57
- package/lib/utils/ui.js.map +1 -1
- package/lib/utils/validate.d.ts +62 -0
- package/lib/utils/validate.d.ts.map +1 -0
- package/lib/utils/validate.js +189 -0
- package/lib/utils/validate.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nearest = nearest;
|
|
4
|
+
exports.checkedEnum = checkedEnum;
|
|
5
|
+
exports.checkedInt = checkedInt;
|
|
6
|
+
exports.checkedPercent = checkedPercent;
|
|
7
|
+
exports.checkedId = checkedId;
|
|
8
|
+
exports.checkedVersionRange = checkedVersionRange;
|
|
9
|
+
exports.checkedText = checkedText;
|
|
10
|
+
const output_1 = require("./output");
|
|
11
|
+
/**
|
|
12
|
+
* Checked parsers for everything the user can type.
|
|
13
|
+
*
|
|
14
|
+
* ── Why this exists ─────────────────────────────────────────────────────────
|
|
15
|
+
*
|
|
16
|
+
* Bad input was being handled three different ways, and two of them were
|
|
17
|
+
* silent:
|
|
18
|
+
*
|
|
19
|
+
* 1. Cast and hope. `opts.platform as 'android' | 'ios'` — `--platform
|
|
20
|
+
* windows` sails through to the bundler.
|
|
21
|
+
* 2. Coerce to a default. `Math.max(1, Number(opts.limit) || 20)` — a typo'd
|
|
22
|
+
* `--limit abc` quietly means 20, and `--limit -5`
|
|
23
|
+
* quietly means 1.
|
|
24
|
+
* 3. Compare and shrug. `if (opts.failOn === 'act')` — `--fail-on acts`
|
|
25
|
+
* matches nothing, so the CI gate the user asked for
|
|
26
|
+
* silently does not exist and the pipeline goes green.
|
|
27
|
+
*
|
|
28
|
+
* The third is the dangerous one and the pattern is general: an unrecognised
|
|
29
|
+
* value that falls through a comparison disables the behaviour it was meant to
|
|
30
|
+
* request, and disabled checks look exactly like passing checks. Every parser
|
|
31
|
+
* here refuses instead, names the flag, shows what was received, and — for
|
|
32
|
+
* enums — suggests the intended value when it is one edit away.
|
|
33
|
+
*
|
|
34
|
+
* All of them exit with ExitCode.Usage, because "you typed the command wrong"
|
|
35
|
+
* and "your project is not ready" (Gate/3) want opposite responses in CI.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Edit distance, capped — only used to decide whether to offer a suggestion,
|
|
39
|
+
* so the exact number past 3 never matters.
|
|
40
|
+
*/
|
|
41
|
+
function distance(a, b) {
|
|
42
|
+
const m = a.length;
|
|
43
|
+
const n = b.length;
|
|
44
|
+
if (Math.abs(m - n) > 3)
|
|
45
|
+
return 99;
|
|
46
|
+
let prev = Array.from({ length: n + 1 }, (_, i) => i);
|
|
47
|
+
for (let i = 1; i <= m; i++) {
|
|
48
|
+
const curr = [i];
|
|
49
|
+
for (let j = 1; j <= n; j++) {
|
|
50
|
+
curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
51
|
+
}
|
|
52
|
+
prev = curr;
|
|
53
|
+
}
|
|
54
|
+
return prev[n];
|
|
55
|
+
}
|
|
56
|
+
/** The allowed value closest to `raw`, when one is close enough to mean it. */
|
|
57
|
+
function nearest(raw, allowed) {
|
|
58
|
+
let best = null;
|
|
59
|
+
let bestScore = 99;
|
|
60
|
+
const lower = raw.toLowerCase();
|
|
61
|
+
for (const option of allowed) {
|
|
62
|
+
const d = distance(lower, option.toLowerCase());
|
|
63
|
+
if (d < bestScore) {
|
|
64
|
+
bestScore = d;
|
|
65
|
+
best = option;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Two edits on a short word is already a different word; scale the tolerance
|
|
69
|
+
// so `acts`→`act` is offered but `x`→`act` is not.
|
|
70
|
+
return best !== null && bestScore <= Math.max(1, Math.floor(best.length / 3)) ? best : null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* One of `allowed`, or exit.
|
|
74
|
+
*
|
|
75
|
+
* Replaces `if (opts.x === 'known')` chains, where an unrecognised value is
|
|
76
|
+
* indistinguishable from the flag not being passed at all.
|
|
77
|
+
*/
|
|
78
|
+
function checkedEnum(flag, raw, allowed, opts = {}) {
|
|
79
|
+
if (opts.caseInsensitive) {
|
|
80
|
+
const hit = allowed.find((a) => a.toLowerCase() === raw.toLowerCase());
|
|
81
|
+
if (hit)
|
|
82
|
+
return hit;
|
|
83
|
+
}
|
|
84
|
+
else if (allowed.includes(raw)) {
|
|
85
|
+
return raw;
|
|
86
|
+
}
|
|
87
|
+
const guess = nearest(raw, allowed);
|
|
88
|
+
(0, output_1.fail)(`${flag} must be one of ${allowed.join(', ')} — got "${raw}".`, [...(guess ? [`Did you mean ${flag} ${guess}?`] : []), ...(opts.details ?? [])], output_1.ExitCode.Usage);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A whole number in range, or exit.
|
|
92
|
+
*
|
|
93
|
+
* `Number('12abc')` is NaN and `Number('')` is 0 — both of which a `|| default`
|
|
94
|
+
* turns into a plausible-looking value the user never asked for. Everything
|
|
95
|
+
* that is not cleanly an integer is refused here instead.
|
|
96
|
+
*/
|
|
97
|
+
function checkedInt(flag, raw, opts = {}) {
|
|
98
|
+
if (raw === undefined || raw === null || raw === '') {
|
|
99
|
+
if (opts.fallback !== undefined)
|
|
100
|
+
return opts.fallback;
|
|
101
|
+
(0, output_1.fail)(`${flag} is required.`, opts.details ?? [], output_1.ExitCode.Usage);
|
|
102
|
+
}
|
|
103
|
+
const text = String(raw).trim();
|
|
104
|
+
const range = opts.min !== undefined && opts.max !== undefined
|
|
105
|
+
? ` from ${opts.min} to ${opts.max}`
|
|
106
|
+
: opts.min !== undefined
|
|
107
|
+
? ` of at least ${opts.min}`
|
|
108
|
+
: '';
|
|
109
|
+
// Deliberately strict: Number() accepts '0x10', '1e3', ' 12 ' and Infinity,
|
|
110
|
+
// none of which anyone means to type into a CLI flag.
|
|
111
|
+
if (!/^[+-]?\d+$/.test(text)) {
|
|
112
|
+
(0, output_1.fail)(`${flag} must be a whole number${range} — got "${text}".`, [
|
|
113
|
+
...(/^[+-]?\d*\.\d+$/.test(text) ? ['Fractions are not accepted here.'] : []),
|
|
114
|
+
...(opts.details ?? []),
|
|
115
|
+
], output_1.ExitCode.Usage);
|
|
116
|
+
}
|
|
117
|
+
const n = Number(text);
|
|
118
|
+
if ((opts.min !== undefined && n < opts.min) || (opts.max !== undefined && n > opts.max)) {
|
|
119
|
+
(0, output_1.fail)(`${flag} must be a whole number${range} — got ${n}.`, opts.details ?? [], output_1.ExitCode.Usage);
|
|
120
|
+
}
|
|
121
|
+
return n;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* A rollout percentage, 0-100.
|
|
125
|
+
*
|
|
126
|
+
* A trailing `%` is accepted because it is the obvious thing to type for a
|
|
127
|
+
* value the help text calls a percentage, and refusing it teaches nothing.
|
|
128
|
+
*/
|
|
129
|
+
function checkedPercent(flag, raw, fallback) {
|
|
130
|
+
const text = raw === undefined || raw === null ? '' : String(raw).trim().replace(/%$/, '');
|
|
131
|
+
return checkedInt(flag, text, {
|
|
132
|
+
min: 0,
|
|
133
|
+
max: 100,
|
|
134
|
+
fallback,
|
|
135
|
+
details: ['0 stages the release without serving it to anyone; 100 serves everyone.'],
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* An identifier, or exit.
|
|
140
|
+
*
|
|
141
|
+
* Catches the two ways ids arrive broken: an empty value from an unquoted
|
|
142
|
+
* shell variable that did not expand (`--app-id $APP` with APP unset becomes
|
|
143
|
+
* `--app-id` swallowing the NEXT flag), and a value with whitespace or a
|
|
144
|
+
* leading dash from a mis-quoted paste. Both otherwise reach the API and come
|
|
145
|
+
* back as a confusing 404.
|
|
146
|
+
*/
|
|
147
|
+
function checkedId(flag, raw) {
|
|
148
|
+
const text = String(raw ?? '').trim();
|
|
149
|
+
if (!text) {
|
|
150
|
+
(0, output_1.fail)(`${flag} was given an empty value.`, ['Check the variable it came from is set.'], output_1.ExitCode.Usage);
|
|
151
|
+
}
|
|
152
|
+
if (text.startsWith('-')) {
|
|
153
|
+
(0, output_1.fail)(`${flag} looks like it swallowed the next flag — got "${text}".`, ['An id never starts with "-". Check for a missing value earlier in the command.'], output_1.ExitCode.Usage);
|
|
154
|
+
}
|
|
155
|
+
if (/\s/.test(text)) {
|
|
156
|
+
(0, output_1.fail)(`${flag} must not contain spaces — got "${text}".`, ['Quote the value if it came from a variable.'], output_1.ExitCode.Usage);
|
|
157
|
+
}
|
|
158
|
+
return text;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* A semver range the server will accept, or exit.
|
|
162
|
+
*
|
|
163
|
+
* Deliberately loose. Ranges legitimately look like `1.0.0`, `^1.0.0`,
|
|
164
|
+
* `>=1.0.0`, `1.x`, `>=1.0.0 <2.0.0` and `*`, and a strict grammar here would
|
|
165
|
+
* reject valid input the API would have taken. The check is only for the
|
|
166
|
+
* shapes that are certainly wrong — empty, or containing no version at all —
|
|
167
|
+
* because those come back as a 400 describing a field the user never typed.
|
|
168
|
+
*/
|
|
169
|
+
function checkedVersionRange(flag, raw) {
|
|
170
|
+
const text = String(raw ?? '').trim();
|
|
171
|
+
if (!text) {
|
|
172
|
+
(0, output_1.fail)(`${flag} was given an empty value.`, ['Use a range like ">=1.0.0", "^1.2.0" or "1.x".'], output_1.ExitCode.Usage);
|
|
173
|
+
}
|
|
174
|
+
if (text !== '*' && !/\d/.test(text)) {
|
|
175
|
+
(0, output_1.fail)(`${flag} does not look like a version range — got "${text}".`, ['Use a range like ">=1.0.0", "^1.2.0", "1.x", or "*" for any version.'], output_1.ExitCode.Usage);
|
|
176
|
+
}
|
|
177
|
+
return text;
|
|
178
|
+
}
|
|
179
|
+
/** Non-empty free text, or exit. Trims, so a whitespace-only value is empty. */
|
|
180
|
+
function checkedText(flag, raw, opts = {}) {
|
|
181
|
+
const text = String(raw ?? '').trim();
|
|
182
|
+
if (!text)
|
|
183
|
+
(0, output_1.fail)(`${flag} was given an empty value.`, [], output_1.ExitCode.Usage);
|
|
184
|
+
if (opts.max && text.length > opts.max) {
|
|
185
|
+
(0, output_1.fail)(`${flag} must be ${opts.max} characters or fewer — got ${text.length}.`, [], output_1.ExitCode.Usage);
|
|
186
|
+
}
|
|
187
|
+
return text;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scalebun/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "Scalebun CLI — OTA bundle publishing and management",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"typecheck": "tsc --noEmit",
|
|
31
31
|
"clean": "rm -rf lib",
|
|
32
32
|
"gen:mark": "node tools/gen-mark.mjs assets/scalebun-mark.svg 13 9",
|
|
33
|
-
"gen:sixel": "node tools/gen-sixel.mjs assets/scalebun-mark.svg"
|
|
33
|
+
"gen:sixel": "node tools/gen-sixel.mjs assets/scalebun-mark.svg",
|
|
34
|
+
"test": "node --test"
|
|
34
35
|
}
|
|
35
36
|
}
|