redlinegate 0.0.2 → 0.0.3
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/README.md +2 -2
- package/dist/bin/redline.js +247 -42
- package/dist/bin/redline.js.map +1 -1
- package/dist/commands/init.js +274 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/remove.js +40 -0
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/status.js +94 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config/redline-json.js +18 -1
- package/dist/config/redline-json.js.map +1 -1
- package/dist/core/git.js +50 -3
- package/dist/core/git.js.map +1 -1
- package/dist/core/version.js +6 -0
- package/dist/core/version.js.map +1 -1
- package/dist/detect/setup.js +200 -0
- package/dist/detect/setup.js.map +1 -0
- package/dist/detect/stack.js +56 -17
- package/dist/detect/stack.js.map +1 -1
- package/dist/metrics/options.js +0 -9
- package/dist/metrics/options.js.map +1 -1
- package/dist/platforms/azure/install.js +1 -5
- package/dist/platforms/azure/install.js.map +1 -1
- package/dist/platforms/azure/verify.js +4 -2
- package/dist/platforms/azure/verify.js.map +1 -1
- package/dist/platforms/github/install.js +110 -22
- package/dist/platforms/github/install.js.map +1 -1
- package/dist/platforms/github/vendor.js +81 -0
- package/dist/platforms/github/vendor.js.map +1 -0
- package/dist/platforms/github/verify.js +17 -2
- package/dist/platforms/github/verify.js.map +1 -1
- package/dist/platforms/types.js +4 -0
- package/dist/platforms/types.js.map +1 -1
- package/dist/render/standards.js +8 -1
- package/dist/render/standards.js.map +1 -1
- package/dist/render/vendors.js +9 -52
- package/dist/render/vendors.js.map +1 -1
- package/dist/rules/catalogue.js +127 -0
- package/dist/rules/catalogue.js.map +1 -0
- package/dist/ui/facts.js +30 -1
- package/dist/ui/facts.js.map +1 -1
- package/dist/ui/prompt.js +137 -8
- package/dist/ui/prompt.js.map +1 -1
- package/dist/ui/report.js +214 -0
- package/dist/ui/report.js.map +1 -0
- package/dist/ui/tty.js +358 -25
- package/dist/ui/tty.js.map +1 -1
- package/dist/ui/wizard.js +133 -19
- package/dist/ui/wizard.js.map +1 -1
- package/dist/verify/remote.js +33 -0
- package/dist/verify/remote.js.map +1 -1
- package/package.json +4 -1
- package/scripts/fetch-stars.mjs +92 -0
- package/scripts/lib/rules.d.mts +18 -0
- package/scripts/publish-local.mjs +183 -0
- package/standards/manifest.json +79 -8
- package/standards/stacks/angular.md +57 -0
- package/standards/stacks/dom.md +61 -0
- package/standards/stacks/svelte.md +45 -0
- package/standards/stacks/vue.md +54 -0
- package/templates/redline.yml +4 -0
- package/workflows/redline-gate.yml +28 -4
- package/scripts/measure-context.mjs +0 -101
package/dist/ui/tty.js
CHANGED
|
@@ -29,10 +29,64 @@ export function colorEnabled(env, isTty) {
|
|
|
29
29
|
const ESC = '\x1b[';
|
|
30
30
|
const wrap = (open, close) => (text) => `${ESC}${open}m${text}${ESC}${close}m`;
|
|
31
31
|
const plain = (text) => text;
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* How precisely this terminal can be asked for a colour.
|
|
34
|
+
*
|
|
35
|
+
* Only truecolor renders the brand red exactly. The 256-colour cube's nearest
|
|
36
|
+
* neighbour is #d70000, fifteen points of red away and indistinguishable in
|
|
37
|
+
* practice; the sixteen-colour fallback is whatever the terminal theme calls
|
|
38
|
+
* "red", which on a Solarized profile is not this red at all — and that is
|
|
39
|
+
* correct, because a theme the operator chose outranks ours.
|
|
40
|
+
*/
|
|
41
|
+
export function colorDepth(env) {
|
|
42
|
+
const colorterm = env.COLORTERM ?? '';
|
|
43
|
+
if (/truecolor|24bit/i.test(colorterm))
|
|
44
|
+
return 'truecolor';
|
|
45
|
+
const term = env.TERM ?? '';
|
|
46
|
+
if (/-256(color)?$/.test(term))
|
|
47
|
+
return 'ansi256';
|
|
48
|
+
return 'basic';
|
|
49
|
+
}
|
|
50
|
+
// #e60000 — the same value web/app/globals.css calls --red. One brand red, and
|
|
51
|
+
// the CLI had been wearing the terminal's generic one.
|
|
52
|
+
const BRAND = { r: 230, g: 0, b: 0 };
|
|
53
|
+
const BRAND_256 = 160;
|
|
54
|
+
const redOpen = (depth) => {
|
|
55
|
+
switch (depth) {
|
|
56
|
+
case 'truecolor':
|
|
57
|
+
return `38;2;${BRAND.r};${BRAND.g};${BRAND.b}`;
|
|
58
|
+
case 'ansi256':
|
|
59
|
+
return `38;5;${BRAND_256}`;
|
|
60
|
+
default:
|
|
61
|
+
return '31';
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
// The wordmark is drawn in white, falling away to grey down the letterforms.
|
|
65
|
+
// Truecolor gets the real ramp; 256 colours get the greyscale cube, which has
|
|
66
|
+
// twenty-four greys and so loses nothing worth having; sixteen colours get the
|
|
67
|
+
// only three shades they have — bright white, white, and whatever the terminal
|
|
68
|
+
// calls "bright black".
|
|
69
|
+
const RAMP_RGB = [245, 214, 180, 148, 120];
|
|
70
|
+
const RAMP_256 = [255, 252, 249, 246, 243];
|
|
71
|
+
function shadeOf(depth) {
|
|
72
|
+
return (level) => {
|
|
73
|
+
const index = Math.max(0, Math.min(RAMP_RGB.length - 1, level));
|
|
74
|
+
if (depth === 'truecolor') {
|
|
75
|
+
const v = RAMP_RGB[index];
|
|
76
|
+
return wrap(`38;2;${v};${v};${v}`, '39');
|
|
77
|
+
}
|
|
78
|
+
if (depth === 'ansi256')
|
|
79
|
+
return wrap(`38;5;${RAMP_256[index]}`, '39');
|
|
80
|
+
if (index === 0)
|
|
81
|
+
return wrap('97', '39');
|
|
82
|
+
return index < 3 ? wrap('37', '39') : wrap('90', '39');
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export function palette(on, depth = 'basic') {
|
|
33
86
|
if (!on) {
|
|
34
87
|
return {
|
|
35
88
|
red: plain,
|
|
89
|
+
shade: () => plain,
|
|
36
90
|
green: plain,
|
|
37
91
|
yellow: plain,
|
|
38
92
|
cyan: plain,
|
|
@@ -42,7 +96,8 @@ export function palette(on) {
|
|
|
42
96
|
};
|
|
43
97
|
}
|
|
44
98
|
return {
|
|
45
|
-
red: wrap(
|
|
99
|
+
red: wrap(redOpen(depth), '39'),
|
|
100
|
+
shade: shadeOf(depth),
|
|
46
101
|
green: wrap('32', '39'),
|
|
47
102
|
yellow: wrap('33', '39'),
|
|
48
103
|
cyan: wrap('36', '39'),
|
|
@@ -62,6 +117,12 @@ const UNICODE = {
|
|
|
62
117
|
radioOff: '○',
|
|
63
118
|
checkOn: '◼',
|
|
64
119
|
checkOff: '◻',
|
|
120
|
+
ok: '✓',
|
|
121
|
+
fail: '✗',
|
|
122
|
+
skip: '·',
|
|
123
|
+
write: '+',
|
|
124
|
+
remove: '-',
|
|
125
|
+
arrow: '→',
|
|
65
126
|
};
|
|
66
127
|
const ASCII = {
|
|
67
128
|
top: '*',
|
|
@@ -74,6 +135,12 @@ const ASCII = {
|
|
|
74
135
|
radioOff: '( )',
|
|
75
136
|
checkOn: '[x]',
|
|
76
137
|
checkOff: '[ ]',
|
|
138
|
+
ok: 'v',
|
|
139
|
+
fail: 'x',
|
|
140
|
+
skip: '.',
|
|
141
|
+
write: '+',
|
|
142
|
+
remove: '-',
|
|
143
|
+
arrow: '->',
|
|
77
144
|
};
|
|
78
145
|
export function glyphs(env, platform = process.platform) {
|
|
79
146
|
// Windows Terminal and modern PowerShell set WT_SESSION; the legacy console
|
|
@@ -89,11 +156,9 @@ export function readKey(chunk) {
|
|
|
89
156
|
switch (chunk) {
|
|
90
157
|
case '\x1b[A':
|
|
91
158
|
case '\x1b0A':
|
|
92
|
-
case 'k':
|
|
93
159
|
return 'up';
|
|
94
160
|
case '\x1b[B':
|
|
95
161
|
case '\x1b0B':
|
|
96
|
-
case 'j':
|
|
97
162
|
return 'down';
|
|
98
163
|
case '\x1b[C':
|
|
99
164
|
case 'l':
|
|
@@ -109,6 +174,13 @@ export function readKey(chunk) {
|
|
|
109
174
|
return 'end';
|
|
110
175
|
case ' ':
|
|
111
176
|
return 'space';
|
|
177
|
+
// Ctrl-A, not 'a': on a list that filters, every letter belongs to the
|
|
178
|
+
// search term, so the bulk action needs a chord that can never be typed.
|
|
179
|
+
case '\x01':
|
|
180
|
+
return 'all';
|
|
181
|
+
case '\x7f':
|
|
182
|
+
case '\b':
|
|
183
|
+
return 'erase';
|
|
112
184
|
case '\r':
|
|
113
185
|
case '\n':
|
|
114
186
|
return 'enter';
|
|
@@ -120,15 +192,32 @@ export function readKey(chunk) {
|
|
|
120
192
|
case '\x1b':
|
|
121
193
|
return 'cancel';
|
|
122
194
|
default:
|
|
123
|
-
|
|
195
|
+
// One printable character, and nothing else. A paste arrives as a single
|
|
196
|
+
// chunk of many, and an escape sequence this switch does not name starts
|
|
197
|
+
// with ESC — treating either as typing would scatter control bytes
|
|
198
|
+
// through a search term.
|
|
199
|
+
return chunk.length === 1 && chunk >= ' ' && chunk <= '~'
|
|
200
|
+
? { kind: 'char', ch: chunk }
|
|
201
|
+
: null;
|
|
124
202
|
}
|
|
125
203
|
}
|
|
126
204
|
const enabledIndexes = (choices) => choices.flatMap((choice, index) => (choice.disabled === undefined ? [index] : []));
|
|
205
|
+
/** Rows the current search term leaves on screen, in list order. */
|
|
206
|
+
export function matching(choices, query) {
|
|
207
|
+
const term = query.trim().toLowerCase();
|
|
208
|
+
if (term === '')
|
|
209
|
+
return choices.map((_, index) => index);
|
|
210
|
+
return choices.flatMap((choice, index) => `${choice.label} ${choice.hint ?? ''}`.toLowerCase().includes(term) ? [index] : []);
|
|
211
|
+
}
|
|
212
|
+
const reachable = (choices, query) => {
|
|
213
|
+
const shown = new Set(matching(choices, query));
|
|
214
|
+
return enabledIndexes(choices).filter((index) => shown.has(index));
|
|
215
|
+
};
|
|
127
216
|
// Movement skips disabled rows and wraps. Wrapping is deliberate: with four
|
|
128
217
|
// options on screen, "down" from the last one meaning nothing is a worse
|
|
129
218
|
// surprise than returning to the top.
|
|
130
|
-
export function move(choices, cursor, delta) {
|
|
131
|
-
const usable =
|
|
219
|
+
export function move(choices, cursor, delta, query = '') {
|
|
220
|
+
const usable = reachable(choices, query);
|
|
132
221
|
if (usable.length === 0)
|
|
133
222
|
return cursor;
|
|
134
223
|
const at = usable.indexOf(cursor);
|
|
@@ -140,20 +229,51 @@ export function move(choices, cursor, delta) {
|
|
|
140
229
|
export function firstEnabled(choices) {
|
|
141
230
|
return enabledIndexes(choices)[0] ?? 0;
|
|
142
231
|
}
|
|
143
|
-
export function reduceList(choices, state, key,
|
|
144
|
-
const
|
|
232
|
+
export function reduceList(choices, state, key, mode) {
|
|
233
|
+
const { multi, search } = mode;
|
|
234
|
+
const usable = reachable(choices, state.query);
|
|
235
|
+
// A search that hides the cursor's row has to put the cursor somewhere real,
|
|
236
|
+
// or the next space toggles a row nobody can see.
|
|
237
|
+
const settle = (next) => {
|
|
238
|
+
const shown = reachable(choices, next.query);
|
|
239
|
+
if (shown.includes(next.cursor) || shown.length === 0)
|
|
240
|
+
return { kind: 'state', state: next };
|
|
241
|
+
return { kind: 'state', state: { ...next, cursor: shown[0] } };
|
|
242
|
+
};
|
|
243
|
+
if (typeof key === 'object') {
|
|
244
|
+
if (!search) {
|
|
245
|
+
// Without a search field the letters are free, so the shortcuts a long
|
|
246
|
+
// list cannot afford are worth having here.
|
|
247
|
+
if (key.ch === 'j')
|
|
248
|
+
return { kind: 'state', state: { ...state, cursor: move(choices, state.cursor, 1) } };
|
|
249
|
+
if (key.ch === 'k')
|
|
250
|
+
return { kind: 'state', state: { ...state, cursor: move(choices, state.cursor, -1) } };
|
|
251
|
+
if (key.ch === 'a')
|
|
252
|
+
return toggleAll(state, usable, multi);
|
|
253
|
+
return { kind: 'state', state };
|
|
254
|
+
}
|
|
255
|
+
return settle({ ...state, query: state.query + key.ch });
|
|
256
|
+
}
|
|
145
257
|
switch (key) {
|
|
146
258
|
case 'up':
|
|
147
|
-
return { kind: 'state', state: { ...state, cursor: move(choices, state.cursor, -1) } };
|
|
259
|
+
return { kind: 'state', state: { ...state, cursor: move(choices, state.cursor, -1, state.query) } };
|
|
148
260
|
case 'down':
|
|
149
|
-
return { kind: 'state', state: { ...state, cursor: move(choices, state.cursor, 1) } };
|
|
261
|
+
return { kind: 'state', state: { ...state, cursor: move(choices, state.cursor, 1, state.query) } };
|
|
150
262
|
case 'home':
|
|
151
263
|
return { kind: 'state', state: { ...state, cursor: usable[0] ?? state.cursor } };
|
|
152
264
|
case 'end':
|
|
153
265
|
return { kind: 'state', state: { ...state, cursor: usable.at(-1) ?? state.cursor } };
|
|
266
|
+
case 'erase':
|
|
267
|
+
return search && state.query !== ''
|
|
268
|
+
? settle({ ...state, query: state.query.slice(0, -1) })
|
|
269
|
+
: { kind: 'state', state };
|
|
154
270
|
case 'space': {
|
|
155
271
|
if (!multi)
|
|
156
272
|
return { kind: 'state', state };
|
|
273
|
+
// Nothing showing means nothing to toggle: the cursor is stale, left on
|
|
274
|
+
// whatever row the filter hid.
|
|
275
|
+
if (!usable.includes(state.cursor))
|
|
276
|
+
return { kind: 'state', state };
|
|
157
277
|
const selected = new Set(state.selected);
|
|
158
278
|
if (selected.has(state.cursor))
|
|
159
279
|
selected.delete(state.cursor);
|
|
@@ -161,6 +281,8 @@ export function reduceList(choices, state, key, multi) {
|
|
|
161
281
|
selected.add(state.cursor);
|
|
162
282
|
return { kind: 'state', state: { ...state, selected } };
|
|
163
283
|
}
|
|
284
|
+
case 'all':
|
|
285
|
+
return toggleAll(state, usable, multi);
|
|
164
286
|
case 'enter':
|
|
165
287
|
// A single-select submits whatever the cursor is on, so it can never
|
|
166
288
|
// return nothing. A multi-select can, and that is a legitimate answer —
|
|
@@ -172,7 +294,40 @@ export function reduceList(choices, state, key, multi) {
|
|
|
172
294
|
return { kind: 'state', state };
|
|
173
295
|
}
|
|
174
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Select every row currently showing, or clear them if they are already all on.
|
|
299
|
+
*
|
|
300
|
+
* Scoped to what the filter leaves visible, which is the combination worth
|
|
301
|
+
* having: type `web`, take all five web profiles, and leave the rest alone.
|
|
302
|
+
* Rows hidden by the filter keep whatever state they had.
|
|
303
|
+
*/
|
|
304
|
+
function toggleAll(state, usable, multi) {
|
|
305
|
+
if (!multi || usable.length === 0)
|
|
306
|
+
return { kind: 'state', state };
|
|
307
|
+
const every = usable.every((i) => state.selected.has(i));
|
|
308
|
+
const selected = new Set(state.selected);
|
|
309
|
+
for (const i of usable) {
|
|
310
|
+
if (every)
|
|
311
|
+
selected.delete(i);
|
|
312
|
+
else
|
|
313
|
+
selected.add(i);
|
|
314
|
+
}
|
|
315
|
+
return { kind: 'state', state: { ...state, selected } };
|
|
316
|
+
}
|
|
175
317
|
const MIN_HINT = 12;
|
|
318
|
+
// Title, keys and footer are never dropped; the two blank separators are, on a
|
|
319
|
+
// terminal too short to spend rows on breathing space. The `+ 1` is the line the
|
|
320
|
+
// cursor sits on after the frame's own trailing newline: without it a frame
|
|
321
|
+
// exactly as tall as the terminal scrolls it by a row, and the rewind then
|
|
322
|
+
// erases whatever moved up into its place.
|
|
323
|
+
const FIXED_LINES = 3;
|
|
324
|
+
const CURSOR_LINE = 1;
|
|
325
|
+
const COMPACT_BELOW = 12;
|
|
326
|
+
// Under this the key hints go too. They are the last thing to drop and the first
|
|
327
|
+
// thing anyone new needs, so this is genuinely the floor: a terminal this short
|
|
328
|
+
// has room for the question, one option and the footer, and nothing else.
|
|
329
|
+
const TERSE_BELOW = 8;
|
|
330
|
+
const MIN_WINDOW = 3;
|
|
176
331
|
function truncate(text, max) {
|
|
177
332
|
if (max <= 1)
|
|
178
333
|
return '';
|
|
@@ -188,7 +343,48 @@ function truncate(text, max) {
|
|
|
188
343
|
export function frame(opts) {
|
|
189
344
|
const { palette: c, glyphs: g, state, choices, multi, width } = opts;
|
|
190
345
|
const bar = c.dim(g.bar);
|
|
191
|
-
|
|
346
|
+
// The count belongs on the title line and nowhere else. A multi-select whose
|
|
347
|
+
// answer is "three of twelve" gives the operator no way to check that without
|
|
348
|
+
// counting marks down the list, and the list is the part that scrolls.
|
|
349
|
+
const chosen = multi ? `${state.selected.size}/${choices.length} selected` : '';
|
|
350
|
+
const titleRoom = width - 3 - (chosen === '' ? 0 : chosen.length + 2);
|
|
351
|
+
const heading = `${c.red(g.active)} ${truncate(c.bold(opts.title), titleRoom)}`;
|
|
352
|
+
const lines = [chosen === '' ? heading : `${heading} ${c.dim(chosen)}`];
|
|
353
|
+
// Keys go directly under the question, not at the far end of the list. At the
|
|
354
|
+
// end they are below the fold on a long menu, which is exactly when an
|
|
355
|
+
// operator who has never seen this prompt needs to be told that space toggles.
|
|
356
|
+
const unicode = g.bar === UNICODE.bar;
|
|
357
|
+
const arrows = unicode ? '↑↓' : 'up/down';
|
|
358
|
+
const sep = unicode ? ' · ' : ' | ';
|
|
359
|
+
const all = multi ? (opts.search === true ? 'ctrl-a all' : 'a all') : '';
|
|
360
|
+
// A multi-select with nothing ticked already submits an empty answer, and
|
|
361
|
+
// "none" is a real answer to most of these questions — install no extra
|
|
362
|
+
// tooling, render for no vendor. But `enter confirm` over `0/2 selected`
|
|
363
|
+
// reads as a form refusing to be submitted until something is picked, so
|
|
364
|
+
// operators sat on a question they had already answered correctly. The key
|
|
365
|
+
// does not change; only the word for what it does when nothing is chosen.
|
|
366
|
+
const submit = multi && state.selected.size === 0 ? 'enter skip' : 'enter confirm';
|
|
367
|
+
const keys = [
|
|
368
|
+
`${arrows} move`,
|
|
369
|
+
...(multi ? ['space select', all] : []),
|
|
370
|
+
...(opts.search === true ? ['type to filter'] : []),
|
|
371
|
+
submit,
|
|
372
|
+
].join(sep);
|
|
373
|
+
const height = opts.height ?? 24;
|
|
374
|
+
const compact = height < COMPACT_BELOW;
|
|
375
|
+
const terse = height < TERSE_BELOW;
|
|
376
|
+
if (!terse)
|
|
377
|
+
lines.push(c.dim(`${g.bar} ${truncate(keys, width - g.bar.length - 2)}`));
|
|
378
|
+
const field = opts.search === true && !terse;
|
|
379
|
+
if (field) {
|
|
380
|
+
// The cursor block is drawn, not left to the terminal: the real cursor is
|
|
381
|
+
// hidden for the whole prompt, because a prompt that moved it would have to
|
|
382
|
+
// put it back before every redraw.
|
|
383
|
+
const typed = state.query === '' ? c.dim('type to filter') : state.query;
|
|
384
|
+
lines.push(`${bar} ${c.dim('search')} ${truncate(typed, width - 12)}${c.inverse(' ')}`);
|
|
385
|
+
}
|
|
386
|
+
if (!compact)
|
|
387
|
+
lines.push(bar);
|
|
192
388
|
// Every column below is measured in screen cells, on the RAW text: a painted
|
|
193
389
|
// string carries escape sequences that have width on the wire and none on the
|
|
194
390
|
// terminal, and padding computed from them misaligns every row.
|
|
@@ -205,38 +401,175 @@ export function frame(opts) {
|
|
|
205
401
|
// of the prompt, not just for itself.
|
|
206
402
|
const labelRoom = Math.max(1, width - prefixWidth);
|
|
207
403
|
const labelWidth = Math.min(labelRoom, Math.max(...choices.map((ch) => ch.label.length)));
|
|
208
|
-
|
|
404
|
+
const shown = matching(choices, state.query);
|
|
405
|
+
if (shown.length === 0) {
|
|
406
|
+
lines.push(`${bar} ${c.dim(truncate(`no option matches "${state.query}"`, width - 4))}`);
|
|
407
|
+
}
|
|
408
|
+
// The window keeps the frame inside the terminal. `more above`/`more below`
|
|
409
|
+
// occupy a row each, so they are counted before the rows are, and the cursor
|
|
410
|
+
// is kept one row inside the edge where there is anything to see past it.
|
|
411
|
+
const chrome = FIXED_LINES -
|
|
412
|
+
(terse ? 1 : 0) +
|
|
413
|
+
CURSOR_LINE +
|
|
414
|
+
(field ? 1 : 0) +
|
|
415
|
+
(compact ? 0 : 2);
|
|
416
|
+
const room = Math.max(1, height - chrome);
|
|
417
|
+
const at = Math.max(0, shown.indexOf(state.cursor));
|
|
418
|
+
let start = 0;
|
|
419
|
+
if (shown.length > room) {
|
|
420
|
+
start = Math.min(Math.max(0, at - Math.floor(room / 2)), shown.length - room);
|
|
421
|
+
}
|
|
422
|
+
const end = Math.min(shown.length, start + room);
|
|
423
|
+
// The counters cost a row each, so they are only worth drawing when a row is
|
|
424
|
+
// left to draw under them. Below that the window is silent and simply shows
|
|
425
|
+
// what fits — a terminal this short has no space to explain itself in, and
|
|
426
|
+
// overflowing it would corrupt the redraw rather than merely inform nobody.
|
|
427
|
+
const markers = room >= MIN_WINDOW;
|
|
428
|
+
const above = markers && start > 0 ? start + 1 : 0;
|
|
429
|
+
const below = markers && end < shown.length ? shown.length - end + 1 : 0;
|
|
430
|
+
const window = shown.slice(above > 0 ? start + 1 : start, below > 0 ? end - 1 : end);
|
|
431
|
+
if (above > 0) {
|
|
432
|
+
lines.push(`${bar} ${c.dim(`${unicode ? '↑' : '^'} ${above} more`)}`);
|
|
433
|
+
}
|
|
434
|
+
for (const index of window) {
|
|
435
|
+
const choice = choices[index];
|
|
209
436
|
const active = index === state.cursor;
|
|
210
437
|
const on = multi ? state.selected.has(index) : active;
|
|
211
438
|
const glyph = multi ? (on ? g.checkOn : g.checkOff) : on ? g.radioOn : g.radioOff;
|
|
212
|
-
const mark = on ? c.
|
|
439
|
+
const mark = on ? c.red(glyph) : c.dim(glyph);
|
|
213
440
|
// Pad the mark itself so a mixed-width glyph set still aligns the labels.
|
|
214
441
|
const markPad = ' '.repeat(markWidth - glyph.length);
|
|
215
442
|
const raw = truncate(choice.label, labelWidth);
|
|
216
443
|
const disabled = choice.disabled !== undefined;
|
|
217
|
-
const label = disabled ? c.dim(raw) : active ? c.
|
|
444
|
+
const label = disabled ? c.dim(raw) : active ? c.bold(c.red(raw)) : raw;
|
|
218
445
|
const pad = ' '.repeat(labelWidth - raw.length);
|
|
219
|
-
|
|
446
|
+
// Only a disabled row explains itself in place: the reason it cannot be
|
|
447
|
+
// picked has to be readable without moving the cursor onto it, which is the
|
|
448
|
+
// one thing the cursor cannot do. Every other row's hint goes to the panel
|
|
449
|
+
// below, where it gets the whole width instead of whatever is left after
|
|
450
|
+
// the longest label in the list.
|
|
220
451
|
const room = width - prefixWidth - labelWidth - HINT_GAP;
|
|
221
|
-
const tail =
|
|
222
|
-
|
|
452
|
+
const tail = choice.disabled !== undefined && room >= MIN_HINT
|
|
453
|
+
? ` ${c.dim(truncate(choice.disabled, room))}`
|
|
454
|
+
: '';
|
|
455
|
+
// Pad only when something follows: with the hints moved to the footer most
|
|
456
|
+
// rows end at their label, and padding them all would leave a column of
|
|
457
|
+
// trailing spaces that shows up the moment a terminal highlights a line.
|
|
458
|
+
lines.push(`${bar} ${mark}${markPad} ${label}${tail === '' ? '' : pad + tail}`);
|
|
459
|
+
}
|
|
460
|
+
if (below > 0) {
|
|
461
|
+
lines.push(`${bar} ${c.dim(`${unicode ? '↓' : 'v'} ${below} more`)}`);
|
|
223
462
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
463
|
+
// The footer is the focused row's own text, full width. A hint squeezed into
|
|
464
|
+
// the tail of its row is the first thing to get truncated, and it is the part
|
|
465
|
+
// that explains a term the operator has never seen — which is the whole
|
|
466
|
+
// reason there is a menu here rather than a flag.
|
|
467
|
+
const focused = choices[state.cursor];
|
|
468
|
+
const detail = focused?.disabled ?? focused?.hint ?? '';
|
|
469
|
+
if (!compact)
|
|
470
|
+
lines.push(bar);
|
|
471
|
+
lines.push(c.dim(`${g.end} ${truncate(detail, width - g.end.length - 2)}`));
|
|
228
472
|
return lines.join('\n');
|
|
229
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* One line of typed input, rendered. Pure, like frame().
|
|
476
|
+
*
|
|
477
|
+
* Three lines and no list, because the only thing this asks for is a value the
|
|
478
|
+
* repository cannot supply itself — a team name, in practice. The placeholder is
|
|
479
|
+
* what happens on an empty answer, stated rather than implied: an operator who
|
|
480
|
+
* presses enter here has chosen the default, and should be able to see what they
|
|
481
|
+
* chose before they choose it.
|
|
482
|
+
*/
|
|
483
|
+
export function field(opts) {
|
|
484
|
+
const { palette: c, glyphs: g, width } = opts;
|
|
485
|
+
const shown = opts.value === '' ? c.dim(truncate(opts.placeholder, width - 6)) : truncate(opts.value, width - 6);
|
|
486
|
+
return [
|
|
487
|
+
`${c.red(g.active)} ${truncate(c.bold(opts.title), width - 3)}`,
|
|
488
|
+
c.dim(`${g.bar} ${truncate(opts.hint, width - g.bar.length - 2)}`),
|
|
489
|
+
`${c.dim(g.bar)} ${shown}${c.inverse(' ')}`,
|
|
490
|
+
c.dim(`${g.end} enter to confirm`),
|
|
491
|
+
].join('\n');
|
|
492
|
+
}
|
|
230
493
|
/** The collapsed record of an answered prompt, kept above the next one. */
|
|
231
494
|
export function answered(title, answer, c, g) {
|
|
232
|
-
return `${c.
|
|
495
|
+
return `${c.dim(g.done)} ${title} ${c.dim('·')} ${c.cyan(answer)}`;
|
|
233
496
|
}
|
|
234
|
-
|
|
235
|
-
|
|
497
|
+
// A five-row block face, carrying only the letters REDLINE needs. A full font
|
|
498
|
+
// would be dead weight: this draws one word, once, and any other string falls
|
|
499
|
+
// back to the plain heading below.
|
|
500
|
+
const FACE = {
|
|
501
|
+
R: ['████', '█ █', '████', '█ █ ', '█ █'],
|
|
502
|
+
E: ['████', '█ ', '███ ', '█ ', '████'],
|
|
503
|
+
D: ['███ ', '█ █', '█ █', '█ █', '███ '],
|
|
504
|
+
L: ['█ ', '█ ', '█ ', '█ ', '████'],
|
|
505
|
+
I: ['███', ' █ ', ' █ ', ' █ ', '███'],
|
|
506
|
+
N: ['█ █', '██ █', '█ ██', '█ █', '█ █'],
|
|
507
|
+
};
|
|
508
|
+
const WORDMARK = 'REDLINE';
|
|
509
|
+
const FACE_ROWS = 5;
|
|
510
|
+
/**
|
|
511
|
+
* The wordmark, or nothing.
|
|
512
|
+
*
|
|
513
|
+
* Nothing is the right answer more often than it looks: the block face is drawn
|
|
514
|
+
* from U+2588, so the same non-UTF-8 console the ASCII glyph set exists for would
|
|
515
|
+
* render seven letters of replacement characters, and a terminal narrower than the
|
|
516
|
+
* word would wrap it into rubble. Both fall back to the plain heading, which is
|
|
517
|
+
* why this returns a list of lines the caller can simply not have.
|
|
518
|
+
*/
|
|
519
|
+
export function wordmark(c, g, width) {
|
|
520
|
+
if (g.bar !== UNICODE.bar)
|
|
521
|
+
return [];
|
|
522
|
+
const letters = [...WORDMARK].map((ch) => FACE[ch]).filter((f) => f !== undefined);
|
|
523
|
+
if (letters.length !== WORDMARK.length)
|
|
524
|
+
return [];
|
|
525
|
+
const drawn = Array.from({ length: FACE_ROWS }, (_, row) => letters.map((face) => face[row]).join(' '));
|
|
526
|
+
if ((drawn[0]?.length ?? 0) > width)
|
|
527
|
+
return [];
|
|
528
|
+
// White at the top falling to grey at the base. Red is the accent this tool
|
|
529
|
+
// spends on the things that matter — the cursor, a selected row, a finding —
|
|
530
|
+
// and a wordmark five rows tall in it drowns all three.
|
|
531
|
+
return drawn.map((row, i) => c.shade(i)(row));
|
|
532
|
+
}
|
|
533
|
+
export function intro(title, c, g, width = 80) {
|
|
534
|
+
const art = wordmark(c, g, width);
|
|
535
|
+
// The chip's padding is drawn by the inverse background, so without colour it
|
|
536
|
+
// is just two stray spaces around the word. Ask the palette whether it paints
|
|
537
|
+
// rather than threading the answer down from the caller.
|
|
538
|
+
const painted = c.dim('') !== '';
|
|
539
|
+
const head = painted
|
|
540
|
+
? `${c.red(g.top)} ${c.inverse(c.bold(` ${title} `))}`
|
|
541
|
+
: `${c.red(g.top)} ${c.bold(title)}`;
|
|
542
|
+
return art.length > 0
|
|
543
|
+
? `${art.join('\n')}\n\n${head}\n${c.dim(g.bar)}`
|
|
544
|
+
: `${head}\n${c.dim(g.bar)}`;
|
|
236
545
|
}
|
|
237
546
|
export function outro(message, c, g) {
|
|
238
547
|
return `${c.dim(g.bar)}\n${c.red(g.end)} ${message}`;
|
|
239
548
|
}
|
|
549
|
+
// The spinner's frames. Braille dots because they are one cell wide in every
|
|
550
|
+
// font that has them at all, so the line does not jitter as it turns; the ASCII
|
|
551
|
+
// fallback is the same four positions a non-UTF-8 console can draw.
|
|
552
|
+
const SPIN_UNICODE = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
553
|
+
const SPIN_ASCII = ['|', '/', '-', '\\'];
|
|
554
|
+
export function spinnerFrames(g) {
|
|
555
|
+
return g.bar === UNICODE.bar ? SPIN_UNICODE : SPIN_ASCII;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* One line of a running task. Pure, like everything else here.
|
|
559
|
+
*
|
|
560
|
+
* `tick` selects the frame, so the caller owns the clock: a spinner that read
|
|
561
|
+
* the time itself could not be tested, and the thing worth testing about a
|
|
562
|
+
* spinner is that it says what the run is doing, not that it turns.
|
|
563
|
+
*/
|
|
564
|
+
export function spinner(label, tick, c, g, width = 80) {
|
|
565
|
+
const frames = spinnerFrames(g);
|
|
566
|
+
const frame = frames[((tick % frames.length) + frames.length) % frames.length];
|
|
567
|
+
return `${c.dim(g.bar)} ${c.red(frame)} ${truncate(label, Math.max(1, width - 6))}`;
|
|
568
|
+
}
|
|
569
|
+
/** The same line, finished: a green tick and the last thing the task was doing. */
|
|
570
|
+
export function spinnerDone(label, c, g, width = 80) {
|
|
571
|
+
return `${c.dim(g.bar)} ${c.green(g.ok)} ${truncate(label, Math.max(1, width - 6))}`;
|
|
572
|
+
}
|
|
240
573
|
export function note(message, c, g) {
|
|
241
574
|
return `${c.dim(g.bar)} ${c.yellow(g.warn)} ${message}`;
|
|
242
575
|
}
|
package/dist/ui/tty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tty.js","sourceRoot":"","sources":["../../cli/ui/tty.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tty.js","sourceRoot":"","sources":["../../cli/ui/tty.ts"],"names":[],"mappings":"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"}
|