@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
package/lib/utils/prompt.js
CHANGED
|
@@ -40,9 +40,11 @@ exports.canPromptHidden = canPromptHidden;
|
|
|
40
40
|
exports.promptHidden = promptHidden;
|
|
41
41
|
exports.closePrompts = closePrompts;
|
|
42
42
|
exports.text = text;
|
|
43
|
+
exports.confirmPhrase = confirmPhrase;
|
|
43
44
|
exports.confirm = confirm;
|
|
44
45
|
exports.number = number;
|
|
45
46
|
exports.select = select;
|
|
47
|
+
exports.confirmDestructive = confirmDestructive;
|
|
46
48
|
const chalk_1 = __importDefault(require("chalk"));
|
|
47
49
|
const readline = __importStar(require("readline"));
|
|
48
50
|
/**
|
|
@@ -134,6 +136,13 @@ function promptHidden(query) {
|
|
|
134
136
|
// stdin. One interface reads sequential lines correctly. It is created lazily —
|
|
135
137
|
// after the raw-mode `select`s run — so it never fights their stdin handling.
|
|
136
138
|
let sharedRl = null;
|
|
139
|
+
// The interactive session used to LEND its own readline to this module, because
|
|
140
|
+
// it held one open for the whole session and two interfaces on one stdin is a
|
|
141
|
+
// top-tier source of "the CLI just hangs" — both attach listeners, the last one
|
|
142
|
+
// consumes the keypress stream, and neither sees a complete line. The session
|
|
143
|
+
// no longer holds one: it owns stdin in raw mode for the menu and hands it back
|
|
144
|
+
// before running anything, so commands are free to make their own prompts here.
|
|
145
|
+
// One owner at a time, enforced by structure rather than by a lending protocol.
|
|
137
146
|
function getRl() {
|
|
138
147
|
if (!sharedRl) {
|
|
139
148
|
sharedRl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -167,39 +176,189 @@ function ask(query) {
|
|
|
167
176
|
});
|
|
168
177
|
});
|
|
169
178
|
}
|
|
170
|
-
/**
|
|
179
|
+
/**
|
|
180
|
+
* Free-text question with an optional default (shown in parentheses).
|
|
181
|
+
*
|
|
182
|
+
* ── Empty is a question, not an answer ──────────────────────────────────────
|
|
183
|
+
*
|
|
184
|
+
* This used to return '' the moment someone pressed Enter with nothing typed,
|
|
185
|
+
* and every caller then invented its own reaction. `text('App id')` in the
|
|
186
|
+
* publish wizard did `if (!id) process.exit(1)` — a silent exit 1, no message,
|
|
187
|
+
* from a prompt that had just told you it wanted an app id. Others carried the
|
|
188
|
+
* empty string onward until the API rejected a field the user never saw.
|
|
189
|
+
*
|
|
190
|
+
* Pressing Enter at a prompt with no default is almost never a decision; it is
|
|
191
|
+
* someone hurrying, or not knowing what is wanted. So empty now re-asks and
|
|
192
|
+
* explains, and callers with something sensible to fall back on pass a
|
|
193
|
+
* `default` — which is what "Enter means yes" should always have looked like.
|
|
194
|
+
* `allowEmpty` remains for fields that are honestly optional.
|
|
195
|
+
*/
|
|
171
196
|
async function text(query, opts = {}) {
|
|
172
197
|
const suffix = opts.default ? chalk_1.default.dim(` (${opts.default})`) : '';
|
|
173
|
-
|
|
174
|
-
|
|
198
|
+
let empties = 0;
|
|
199
|
+
for (;;) {
|
|
200
|
+
const raw = (await ask(`${chalk_1.default.cyan('?')} ${query}${suffix}: `)).trim();
|
|
201
|
+
const answer = raw || opts.default || '';
|
|
202
|
+
if (!answer && !opts.allowEmpty) {
|
|
203
|
+
bailOnEmptyLoop(++empties, `${query} is required.`);
|
|
204
|
+
console.log(chalk_1.default.yellow(' Nothing entered — this one is needed to continue.'));
|
|
205
|
+
if (opts.help)
|
|
206
|
+
console.log(chalk_1.default.dim(` ${opts.help}`));
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
const problem = answer && opts.validate ? opts.validate(answer) : null;
|
|
210
|
+
if (problem) {
|
|
211
|
+
console.log(chalk_1.default.yellow(` ${problem}`));
|
|
212
|
+
if (opts.help)
|
|
213
|
+
console.log(chalk_1.default.dim(` ${opts.help}`));
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
return answer;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Type-this-exact-phrase confirmation, for the destructive commands.
|
|
221
|
+
*
|
|
222
|
+
* Empty and wrong are DIFFERENT mistakes and deserve different answers:
|
|
223
|
+
*
|
|
224
|
+
* empty — cancel. Enter must stay an escape from a prompt that is about to
|
|
225
|
+
* delete a channel or roll back a fleet; re-asking would trap
|
|
226
|
+
* someone whose actual intent was to back out. But say so, rather
|
|
227
|
+
* than printing "Cancelled" and leaving them to guess whether the
|
|
228
|
+
* keystroke registered.
|
|
229
|
+
* wrong — re-ask. A typo in a channel name is not a decision to cancel, and
|
|
230
|
+
* making the operator re-run the whole command mid-incident to fix
|
|
231
|
+
* one character is the worst moment to be pedantic.
|
|
232
|
+
*/
|
|
233
|
+
async function confirmPhrase(query, expected, opts = {}) {
|
|
234
|
+
const normalise = (v) => (opts.caseInsensitive ? v.toLowerCase() : v);
|
|
235
|
+
for (;;) {
|
|
236
|
+
const answer = (await ask(`${chalk_1.default.cyan('?')} ${query}`)).trim();
|
|
237
|
+
if (!answer) {
|
|
238
|
+
console.log(chalk_1.default.dim(' Nothing typed — cancelled.'));
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
if (normalise(answer) === normalise(expected))
|
|
242
|
+
return true;
|
|
243
|
+
console.log(chalk_1.default.yellow(` That is not "${expected}" — got "${answer}".`));
|
|
244
|
+
console.log(chalk_1.default.dim(' Type it exactly, or press Enter to cancel.'));
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Guard against a re-ask loop becoming a hang.
|
|
249
|
+
*
|
|
250
|
+
* `ask()` resolves '' both when a person presses Enter and when stdin closes,
|
|
251
|
+
* and the two are indistinguishable from here. So a prompt that re-asks on
|
|
252
|
+
* empty would spin forever against a closed or piped stdin, printing its
|
|
253
|
+
* help text into a void — a CI job that hangs until the runner kills it,
|
|
254
|
+
* looking like a network fault rather than a missing flag.
|
|
255
|
+
*
|
|
256
|
+
* Off a TTY there is nobody to help, so the first empty answer is fatal. On a
|
|
257
|
+
* TTY the cap is high enough that a real person never meets it.
|
|
258
|
+
*/
|
|
259
|
+
function bailOnEmptyLoop(attempts, what) {
|
|
260
|
+
const interactive = process.stdin.isTTY && process.stdout.isTTY;
|
|
261
|
+
if (interactive && attempts < 10)
|
|
262
|
+
return;
|
|
263
|
+
console.error(`❌ ${what}`);
|
|
264
|
+
if (!interactive) {
|
|
265
|
+
console.error(' Nothing is attached to answer this prompt — pass it as a flag instead.');
|
|
266
|
+
}
|
|
267
|
+
process.exit(1);
|
|
175
268
|
}
|
|
176
|
-
|
|
269
|
+
const YES = new Set(['y', 'yes', 'true', '1']);
|
|
270
|
+
const NO = new Set(['n', 'no', 'false', '0']);
|
|
271
|
+
/**
|
|
272
|
+
* Yes/no question. Empty input takes the default; anything unrecognised
|
|
273
|
+
* RE-ASKS.
|
|
274
|
+
*
|
|
275
|
+
* ── Why it re-asks ──────────────────────────────────────────────────────────
|
|
276
|
+
*
|
|
277
|
+
* This used to be `return answer === 'y' || answer === 'yes'`, so every input
|
|
278
|
+
* that was not literally yes counted as no. Typing `50` at
|
|
279
|
+
* "Promote v14 to 100% of devices? (y/N)" — a completely reasonable thing to
|
|
280
|
+
* type when you wanted 50% — silently meant "no", and the CLI reported
|
|
281
|
+
* "Cancelled — nothing was promoted" as though the user had declined. The
|
|
282
|
+
* person did not decline. They answered a different question, and the tool
|
|
283
|
+
* discarded the answer and blamed them for it.
|
|
284
|
+
*
|
|
285
|
+
* The same swallow hid `yes please`, `Y ` with a stray space, and a mistyped
|
|
286
|
+
* `t`. Silently reading all of those as "no" is safe for the fleet and awful
|
|
287
|
+
* for the human: the destructive path is protected while the intent is lost
|
|
288
|
+
* without a word.
|
|
289
|
+
*/
|
|
177
290
|
async function confirm(query, opts = {}) {
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
291
|
+
const required = opts.default === undefined;
|
|
292
|
+
// The suffix has to tell the truth about what Enter does. `(y/n)` with
|
|
293
|
+
// neither letter capitalised is the standing convention for "no default,
|
|
294
|
+
// answer the question" — writing `(y/N)` here and then re-asking would be a
|
|
295
|
+
// prompt that lies about its own contract.
|
|
296
|
+
const suffix = required ? '(y/n)' : opts.default ? '(Y/n)' : '(y/N)';
|
|
297
|
+
let empties = 0;
|
|
298
|
+
for (;;) {
|
|
299
|
+
const answer = (await ask(`${chalk_1.default.cyan('?')} ${query} ${chalk_1.default.dim(suffix)}: `))
|
|
300
|
+
.trim()
|
|
301
|
+
.toLowerCase();
|
|
302
|
+
if (!answer) {
|
|
303
|
+
if (!required)
|
|
304
|
+
return opts.default;
|
|
305
|
+
bailOnEmptyLoop(++empties, `${query} needs a yes or no.`);
|
|
306
|
+
console.log(chalk_1.default.yellow(' This one has no default — answer y or n.'));
|
|
307
|
+
console.log(chalk_1.default.dim(' Ctrl+C backs out without doing anything.'));
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
if (YES.has(answer))
|
|
311
|
+
return true;
|
|
312
|
+
if (NO.has(answer))
|
|
313
|
+
return false;
|
|
314
|
+
// A number here almost always means the user was answering the quantity in
|
|
315
|
+
// the question rather than the yes/no, so say so instead of "invalid".
|
|
316
|
+
if (/^\d+%?$/.test(answer)) {
|
|
317
|
+
console.log(chalk_1.default.yellow(` "${answer}" looks like a number — this is a yes or no question.`));
|
|
318
|
+
if (opts.numericHint)
|
|
319
|
+
console.log(chalk_1.default.dim(` ${opts.numericHint}`));
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
console.log(chalk_1.default.yellow(` Please answer y or n — got "${answer}".`));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
185
325
|
}
|
|
186
326
|
/** Integer question with optional default and min/max validation (loops until valid). */
|
|
187
327
|
async function number(query, opts = {}) {
|
|
188
328
|
const { min, max } = opts;
|
|
189
329
|
const range = min !== undefined && max !== undefined ? ` between ${min} and ${max}` : '';
|
|
330
|
+
let empties = 0;
|
|
190
331
|
// eslint-disable-next-line no-constant-condition
|
|
191
332
|
while (true) {
|
|
192
333
|
const suffix = opts.default !== undefined ? chalk_1.default.dim(` (${opts.default})`) : '';
|
|
193
334
|
const raw = (await ask(`${chalk_1.default.cyan('?')} ${query}${suffix}: `)).trim();
|
|
194
335
|
if (!raw && opts.default !== undefined)
|
|
195
336
|
return opts.default;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
(
|
|
200
|
-
|
|
337
|
+
// Empty with no default fell through to the format check below and was
|
|
338
|
+
// reported as `got ""`, which describes the input rather than the problem.
|
|
339
|
+
if (!raw) {
|
|
340
|
+
bailOnEmptyLoop(++empties, `${query} is required.`);
|
|
341
|
+
console.log(chalk_1.default.yellow(` Nothing entered — enter a whole number${range}.`));
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
// A trailing % is the obvious thing to type for something the question
|
|
345
|
+
// calls a percentage. Number('50%') is NaN, so without this the prompt
|
|
346
|
+
// rejects the right answer for a formatting reason.
|
|
347
|
+
const cleaned = raw.replace(/%$/, '').trim();
|
|
348
|
+
// Strict rather than Number(): that accepts '0x10', '1e3' and Infinity,
|
|
349
|
+
// and reading a hex literal as a rollout percentage helps nobody.
|
|
350
|
+
if (!/^[+-]?\d+$/.test(cleaned)) {
|
|
351
|
+
console.log(chalk_1.default.yellow(/^[+-]?\d*\.\d+$/.test(cleaned)
|
|
352
|
+
? ` Whole numbers only${range} — got "${raw}".`
|
|
353
|
+
: ` Please enter a whole number${range} — got "${raw}".`));
|
|
354
|
+
continue;
|
|
201
355
|
}
|
|
202
|
-
|
|
356
|
+
const n = Number(cleaned);
|
|
357
|
+
if ((min !== undefined && n < min) || (max !== undefined && n > max)) {
|
|
358
|
+
console.log(chalk_1.default.yellow(` ${n} is out of range — enter a whole number${range}.`));
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
return n;
|
|
203
362
|
}
|
|
204
363
|
}
|
|
205
364
|
/**
|
|
@@ -224,10 +383,16 @@ async function numberedSelect(query, choices, def) {
|
|
|
224
383
|
const raw = (await ask(` Choose 1-${choices.length} ${chalk_1.default.dim(`(${def + 1})`)}: `)).trim();
|
|
225
384
|
if (!raw)
|
|
226
385
|
return choices[def].value;
|
|
227
|
-
|
|
228
|
-
|
|
386
|
+
// parseInt('2abc') is 2, so a typo used to select a neighbour of what the
|
|
387
|
+
// user meant. Require the whole answer to be the number.
|
|
388
|
+
if (!/^\d+$/.test(raw)) {
|
|
389
|
+
console.log(chalk_1.default.yellow(` Enter a number between 1 and ${choices.length} — got "${raw}".`));
|
|
390
|
+
continue;
|
|
391
|
+
}
|
|
392
|
+
const n = Number(raw);
|
|
393
|
+
if (n >= 1 && n <= choices.length)
|
|
229
394
|
return choices[n - 1].value;
|
|
230
|
-
console.log(chalk_1.default.yellow(`
|
|
395
|
+
console.log(chalk_1.default.yellow(` ${n} is not on the list — choose between 1 and ${choices.length}.`));
|
|
231
396
|
}
|
|
232
397
|
}
|
|
233
398
|
function arrowSelect(query, choices, def) {
|
|
@@ -290,4 +455,41 @@ function arrowSelect(query, choices, def) {
|
|
|
290
455
|
stdin.on('data', onData);
|
|
291
456
|
});
|
|
292
457
|
}
|
|
458
|
+
/**
|
|
459
|
+
* The "are you sure" for anything that cannot be undone.
|
|
460
|
+
*
|
|
461
|
+
* ── Why a select and not a y/n ──────────────────────────────────────────────
|
|
462
|
+
*
|
|
463
|
+
* A y/n prompt is answered by muscle memory: `y` is the key people press to get
|
|
464
|
+
* past a question, and the ones worth stopping for look identical to the ones
|
|
465
|
+
* that are not. A list has to be READ before it can be answered — the cursor
|
|
466
|
+
* starts on the safe row, and choosing the destructive one is a deliberate move
|
|
467
|
+
* downward rather than a reflex.
|
|
468
|
+
*
|
|
469
|
+
* `select()` gives arrow keys on a TTY and a numbered prompt anywhere else, so
|
|
470
|
+
* this degrades to something answerable over SSH or in a pipe.
|
|
471
|
+
*
|
|
472
|
+
* `consequence` is printed BEFORE the list, in the imperative present, because
|
|
473
|
+
* the moment to say what will happen is while the reader still has a choice.
|
|
474
|
+
* Off a TTY there is nobody to ask: the caller must have passed an explicit
|
|
475
|
+
* flag, and we say which one rather than hanging on a prompt nothing can answer.
|
|
476
|
+
*/
|
|
477
|
+
async function confirmDestructive(opts) {
|
|
478
|
+
const { title, consequence = [], confirmLabel, flag = '--yes' } = opts;
|
|
479
|
+
console.log('');
|
|
480
|
+
console.log(chalk_1.default.yellow(`⚠️ ${title}`));
|
|
481
|
+
for (const line of consequence)
|
|
482
|
+
console.log(chalk_1.default.dim(` ${line}`));
|
|
483
|
+
console.log('');
|
|
484
|
+
if (!process.stdin.isTTY) {
|
|
485
|
+
console.error(`Refusing to continue without confirmation — there is no terminal to ask.
|
|
486
|
+
` +
|
|
487
|
+
`Pass ${flag} if this is intentional.`);
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
return select('Are you sure?', [
|
|
491
|
+
{ label: 'No, cancel', value: false, hint: 'nothing changes' },
|
|
492
|
+
{ label: confirmLabel, value: true, hint: 'cannot be undone' },
|
|
493
|
+
], { default: 0 });
|
|
494
|
+
}
|
|
293
495
|
//# sourceMappingURL=prompt.js.map
|
package/lib/utils/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build provenance for an OTA bundle — where the code came from and which CI run
|
|
3
|
+
* produced it. Sent (optionally) with the presign request so the dashboard can
|
|
4
|
+
* show Git SHA / PR / CI build / pipeline. Every field is best-effort: on a
|
|
5
|
+
* developer's laptop only the git fields resolve; in CI the run metadata fills in.
|
|
6
|
+
*/
|
|
7
|
+
export interface Provenance {
|
|
8
|
+
gitSha?: string;
|
|
9
|
+
gitBranch?: string;
|
|
10
|
+
prNumber?: number;
|
|
11
|
+
ciProvider?: string;
|
|
12
|
+
ciPipeline?: string;
|
|
13
|
+
ciBuildNumber?: string;
|
|
14
|
+
ciRunUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function collectProvenance(cwd?: string): Provenance;
|
|
17
|
+
export interface AssetEntry {
|
|
18
|
+
path: string;
|
|
19
|
+
assetType: 'js' | 'image' | 'font' | 'other';
|
|
20
|
+
sizeBytes: number;
|
|
21
|
+
sha256?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Enumerate the bundle + its Metro assets into a manifest the backend stores as
|
|
25
|
+
* per-asset rows (so the dashboard can diff added/changed/removed and size
|
|
26
|
+
* regressions). The JS bundle is always the first entry; `assetsDir` is the
|
|
27
|
+
* `--assets-dest` directory from `buildBundle` (absent for pre-built bundles).
|
|
28
|
+
*/
|
|
29
|
+
export declare function collectAssetManifest(bundlePath: string, bundleSha256: string, bundleSizeBytes: number, assetsDir?: string): AssetEntry[];
|
|
30
|
+
//# sourceMappingURL=provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/utils/provenance.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsBD,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,UAAU,CAmDzE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,UAAU,EAAE,CA6Bd"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.collectProvenance = collectProvenance;
|
|
37
|
+
exports.collectAssetManifest = collectAssetManifest;
|
|
38
|
+
const childProcess = __importStar(require("child_process"));
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const hash_1 = require("./hash");
|
|
42
|
+
function git(args, cwd) {
|
|
43
|
+
try {
|
|
44
|
+
const out = childProcess
|
|
45
|
+
.execFileSync('git', args, { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] })
|
|
46
|
+
.trim();
|
|
47
|
+
return out || undefined;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Drop undefined keys so the JSON body stays clean. */
|
|
54
|
+
function compact(p) {
|
|
55
|
+
const out = {};
|
|
56
|
+
for (const [k, v] of Object.entries(p)) {
|
|
57
|
+
if (v !== undefined && v !== null && v !== '')
|
|
58
|
+
out[k] = v;
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
function collectProvenance(cwd = process.cwd()) {
|
|
63
|
+
const env = process.env;
|
|
64
|
+
// GitHub Actions
|
|
65
|
+
if (env.GITHUB_ACTIONS === 'true') {
|
|
66
|
+
const prMatch = /refs\/pull\/(\d+)\//.exec(env.GITHUB_REF ?? '');
|
|
67
|
+
return compact({
|
|
68
|
+
gitSha: env.GITHUB_SHA ?? git(['rev-parse', 'HEAD'], cwd),
|
|
69
|
+
gitBranch: env.GITHUB_REF_NAME ?? git(['rev-parse', '--abbrev-ref', 'HEAD'], cwd),
|
|
70
|
+
prNumber: prMatch ? Number(prMatch[1]) : undefined,
|
|
71
|
+
ciProvider: 'github-actions',
|
|
72
|
+
ciPipeline: env.GITHUB_WORKFLOW,
|
|
73
|
+
ciBuildNumber: env.GITHUB_RUN_NUMBER,
|
|
74
|
+
ciRunUrl: env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY && env.GITHUB_RUN_ID
|
|
75
|
+
? `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`
|
|
76
|
+
: undefined,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// GitLab CI
|
|
80
|
+
if (env.GITLAB_CI === 'true') {
|
|
81
|
+
return compact({
|
|
82
|
+
gitSha: env.CI_COMMIT_SHA ?? git(['rev-parse', 'HEAD'], cwd),
|
|
83
|
+
gitBranch: env.CI_COMMIT_REF_NAME ?? git(['rev-parse', '--abbrev-ref', 'HEAD'], cwd),
|
|
84
|
+
prNumber: env.CI_MERGE_REQUEST_IID ? Number(env.CI_MERGE_REQUEST_IID) : undefined,
|
|
85
|
+
ciProvider: 'gitlab-ci',
|
|
86
|
+
ciPipeline: env.CI_PIPELINE_NAME ?? env.CI_PROJECT_PATH,
|
|
87
|
+
ciBuildNumber: env.CI_PIPELINE_IID,
|
|
88
|
+
ciRunUrl: env.CI_PIPELINE_URL,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Bitrise
|
|
92
|
+
if (env.BITRISE_IO === 'true') {
|
|
93
|
+
return compact({
|
|
94
|
+
gitSha: env.BITRISE_GIT_COMMIT ?? git(['rev-parse', 'HEAD'], cwd),
|
|
95
|
+
gitBranch: env.BITRISE_GIT_BRANCH ?? git(['rev-parse', '--abbrev-ref', 'HEAD'], cwd),
|
|
96
|
+
prNumber: env.BITRISE_PULL_REQUEST ? Number(env.BITRISE_PULL_REQUEST) : undefined,
|
|
97
|
+
ciProvider: 'bitrise',
|
|
98
|
+
ciPipeline: env.BITRISE_TRIGGERED_WORKFLOW_ID,
|
|
99
|
+
ciBuildNumber: env.BITRISE_BUILD_NUMBER,
|
|
100
|
+
ciRunUrl: env.BITRISE_BUILD_URL,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Local / unknown CI — resolve what git can tell us.
|
|
104
|
+
return compact({
|
|
105
|
+
gitSha: git(['rev-parse', 'HEAD'], cwd),
|
|
106
|
+
gitBranch: git(['rev-parse', '--abbrev-ref', 'HEAD'], cwd),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function assetTypeForExt(p) {
|
|
110
|
+
const e = path.extname(p).toLowerCase();
|
|
111
|
+
if (['.js', '.jsbundle', '.hbc', '.bundle'].includes(e))
|
|
112
|
+
return 'js';
|
|
113
|
+
if (['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.bmp', '.ico'].includes(e))
|
|
114
|
+
return 'image';
|
|
115
|
+
if (['.ttf', '.otf', '.woff', '.woff2'].includes(e))
|
|
116
|
+
return 'font';
|
|
117
|
+
return 'other';
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Enumerate the bundle + its Metro assets into a manifest the backend stores as
|
|
121
|
+
* per-asset rows (so the dashboard can diff added/changed/removed and size
|
|
122
|
+
* regressions). The JS bundle is always the first entry; `assetsDir` is the
|
|
123
|
+
* `--assets-dest` directory from `buildBundle` (absent for pre-built bundles).
|
|
124
|
+
*/
|
|
125
|
+
function collectAssetManifest(bundlePath, bundleSha256, bundleSizeBytes, assetsDir) {
|
|
126
|
+
const assets = [
|
|
127
|
+
{ path: path.basename(bundlePath), assetType: 'js', sizeBytes: bundleSizeBytes, sha256: bundleSha256 },
|
|
128
|
+
];
|
|
129
|
+
if (assetsDir && fs.existsSync(assetsDir)) {
|
|
130
|
+
const walk = (dir) => {
|
|
131
|
+
for (const name of fs.readdirSync(dir)) {
|
|
132
|
+
const full = path.join(dir, name);
|
|
133
|
+
const st = fs.statSync(full);
|
|
134
|
+
if (st.isDirectory()) {
|
|
135
|
+
walk(full);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const rel = path.relative(assetsDir, full).split(path.sep).join('/');
|
|
139
|
+
assets.push({
|
|
140
|
+
path: rel,
|
|
141
|
+
assetType: assetTypeForExt(name),
|
|
142
|
+
sizeBytes: st.size,
|
|
143
|
+
sha256: (0, hash_1.sha256File)(full),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
try {
|
|
149
|
+
walk(assetsDir);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
/* best-effort — a missing asset dir just means a JS-only manifest */
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return assets;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/utils/provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolving what a command should act on, without making the operator type it.
|
|
3
|
+
*
|
|
4
|
+
* ── The chain, in order ─────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* 1. an explicit flag — always wins
|
|
7
|
+
* 2. SCALEBUN_APP_ID / scalebun.json — the common case, and silent
|
|
8
|
+
* 3. the account has exactly one app — auto-select and say so
|
|
9
|
+
* 4. a TTY — interactive picker
|
|
10
|
+
* 5. no TTY — hard error naming the flag
|
|
11
|
+
*
|
|
12
|
+
* Layer 5 is the one that must never be skipped. A prompt that blocks in CI is
|
|
13
|
+
* a deploy that hangs until the job times out, and it looks like a network
|
|
14
|
+
* fault rather than a missing flag. The publish wizard already got this right
|
|
15
|
+
* (`ota-publish.ts`, TTY-gated); this generalises that rule so every command
|
|
16
|
+
* inherits it instead of re-deciding.
|
|
17
|
+
*
|
|
18
|
+
* ── Why resolving beats prompting ───────────────────────────────────────────
|
|
19
|
+
*
|
|
20
|
+
* Prompting on nine commands turns a nine-flag problem into a nine-prompt
|
|
21
|
+
* problem. Layer 2 is where the win is: `scalebun link` once, and the flag
|
|
22
|
+
* disappears from every later invocation. There is a cost argument too —
|
|
23
|
+
* `fetchAllApps` walks orgs → projects → project-detail, so resolving from the
|
|
24
|
+
* network on every command pays N+1 HTTP calls every time.
|
|
25
|
+
*/
|
|
26
|
+
export interface ResolveOpts {
|
|
27
|
+
/** The explicit flag value, if the user passed one. */
|
|
28
|
+
appId?: string;
|
|
29
|
+
/** Skip layers 3 and 4 — set by --json / --non-interactive / --yes. */
|
|
30
|
+
nonInteractive?: boolean;
|
|
31
|
+
/** Flag name to quote in the non-TTY error. */
|
|
32
|
+
flag?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* True when this process must not prompt: no TTY, or the caller forbade it.
|
|
36
|
+
*
|
|
37
|
+
* `isJson()` is the authority on machine mode rather than a per-command
|
|
38
|
+
* `opts.json`. Commander does not hand root options down to subcommand
|
|
39
|
+
* handlers — and because the root declares `--json` too, it consumes the flag
|
|
40
|
+
* before a subcommand ever sees it. So the flag is read once from raw argv at
|
|
41
|
+
* startup (`applyGlobalFlags`) and every consumer asks `output.ts`. The
|
|
42
|
+
* per-command `--json` declarations remain, purely so `--help` documents them.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isNonInteractive(opts?: {
|
|
45
|
+
nonInteractive?: boolean;
|
|
46
|
+
}): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve the app id for a command.
|
|
49
|
+
*
|
|
50
|
+
* Never returns an empty string — it either returns an id or exits with a
|
|
51
|
+
* message naming the exact flag to pass.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveAppId(opts?: ResolveOpts): Promise<string>;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve a release for the control commands.
|
|
56
|
+
*
|
|
57
|
+
* `pause` and `rollback` already accepted an optional --release-id and fell
|
|
58
|
+
* back to "the single ACTIVE release"; `resume` required it and never resolved,
|
|
59
|
+
* which made the undo of the panic button the hardest command to type. This
|
|
60
|
+
* generalises the resolver and lets each caller say which statuses count —
|
|
61
|
+
* so `resume` can look for PAUSED rather than ACTIVE.
|
|
62
|
+
*/
|
|
63
|
+
export interface ReleaseRow {
|
|
64
|
+
id: string;
|
|
65
|
+
status: string;
|
|
66
|
+
rolloutPercent?: number;
|
|
67
|
+
bundle?: {
|
|
68
|
+
version?: number;
|
|
69
|
+
platform?: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export declare function describeRelease(r: ReleaseRow): string;
|
|
73
|
+
export declare function resolveRelease(releases: ReleaseRow[], opts: {
|
|
74
|
+
releaseId?: string;
|
|
75
|
+
/** Statuses that qualify when no id was given. */
|
|
76
|
+
statuses: string[];
|
|
77
|
+
/** Verb used in messages: "resume", "pause", … */
|
|
78
|
+
verb: string;
|
|
79
|
+
nonInteractive?: boolean;
|
|
80
|
+
}): Promise<ReleaseRow>;
|
|
81
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/utils/resolve.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CASjF;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsE1E;AAmBD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAIrD;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GACA,OAAO,CAAC,UAAU,CAAC,CAmCrB"}
|