@o/cli 0.0.0-bootstrap.0 → 0.16.14
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 +17 -0
- package/dist/args.d.ts +27 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +46 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +32 -0
- package/dist/cli.js.map +1 -0
- package/dist/cmd.d.ts +32 -0
- package/dist/cmd.d.ts.map +1 -0
- package/dist/cmd.js +70 -0
- package/dist/cmd.js.map +1 -0
- package/dist/handle-process-exit.d.ts +14 -0
- package/dist/handle-process-exit.d.ts.map +1 -0
- package/dist/handle-process-exit.js +191 -0
- package/dist/handle-process-exit.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/process-state.d.ts +8 -0
- package/dist/process-state.d.ts.map +1 -0
- package/dist/process-state.js +17 -0
- package/dist/process-state.js.map +1 -0
- package/dist/resolve-script.d.ts +26 -0
- package/dist/resolve-script.d.ts.map +1 -0
- package/dist/resolve-script.js +193 -0
- package/dist/resolve-script.js.map +1 -0
- package/dist/run-all.d.ts +15 -0
- package/dist/run-all.d.ts.map +1 -0
- package/dist/run-all.js +405 -0
- package/dist/run-all.js.map +1 -0
- package/dist/run-pty.mjs +455 -0
- package/dist/run.d.ts +34 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +253 -0
- package/dist/run.js.map +1 -0
- package/package.json +40 -2
package/dist/run.js
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { cpus } from 'node:os';
|
|
3
|
+
import { getIsExiting, notifyProcessHandlers, } from './process-state.js';
|
|
4
|
+
export { getIsExiting };
|
|
5
|
+
const colors = [
|
|
6
|
+
'\x1b[36m', // cyan
|
|
7
|
+
'\x1b[35m', // magenta
|
|
8
|
+
'\x1b[32m', // green
|
|
9
|
+
'\x1b[33m', // yellow
|
|
10
|
+
'\x1b[34m', // blue
|
|
11
|
+
'\x1b[31m', // red
|
|
12
|
+
];
|
|
13
|
+
const reset = '\x1b[0m';
|
|
14
|
+
let colorIndex = 0;
|
|
15
|
+
function getNextColor() {
|
|
16
|
+
const color = colors[colorIndex % colors.length];
|
|
17
|
+
colorIndex++;
|
|
18
|
+
return color;
|
|
19
|
+
}
|
|
20
|
+
const running = {};
|
|
21
|
+
export async function runInline(name, cb) {
|
|
22
|
+
const promise = cb();
|
|
23
|
+
running[name] = promise;
|
|
24
|
+
return promise;
|
|
25
|
+
}
|
|
26
|
+
export async function run(command, options) {
|
|
27
|
+
const { env, cwd, silent, captureOutput, prefix, detached, timeout, timing, interactive, } = options || {};
|
|
28
|
+
if (timing) {
|
|
29
|
+
const name = typeof timing === 'string' ? timing : command;
|
|
30
|
+
const startTime = Date.now();
|
|
31
|
+
try {
|
|
32
|
+
const promise = runInternal();
|
|
33
|
+
running[name] = promise;
|
|
34
|
+
const result = await promise;
|
|
35
|
+
const duration = Date.now() - startTime;
|
|
36
|
+
console.info(`\x1b[32m✓\x1b[0m \x1b[35m${name}\x1b[0m completed in \x1b[33m${formatDuration(duration)}\x1b[0m`);
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const duration = Date.now() - startTime;
|
|
41
|
+
console.error(`✗ ${name} failed after ${formatDuration(duration)}`);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
running[name] = null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return runInternal();
|
|
49
|
+
async function runInternal() {
|
|
50
|
+
// respect O_CLI_SILENT for quiet mode in watch scenarios
|
|
51
|
+
const effectiveSilent = silent || process.env.O_CLI_SILENT === '1';
|
|
52
|
+
if (!effectiveSilent) {
|
|
53
|
+
console.info(`$ ${command}${cwd ? ` (in ${cwd})` : ``}`);
|
|
54
|
+
}
|
|
55
|
+
let timeoutId;
|
|
56
|
+
let didTimeOut = false;
|
|
57
|
+
try {
|
|
58
|
+
const shell = spawn('bash', ['-c', command], {
|
|
59
|
+
env: { ...process.env, ...env },
|
|
60
|
+
cwd,
|
|
61
|
+
stdio: interactive ? 'inherit' : ['ignore', 'pipe', 'pipe'],
|
|
62
|
+
detached: detached ?? false,
|
|
63
|
+
});
|
|
64
|
+
if (detached) {
|
|
65
|
+
shell.unref();
|
|
66
|
+
}
|
|
67
|
+
notifyProcessHandlers(shell);
|
|
68
|
+
if (timeout) {
|
|
69
|
+
timeoutId = setTimeout(() => {
|
|
70
|
+
didTimeOut = true;
|
|
71
|
+
console.error(`Command timed out after ${timeout}ms: ${command}`);
|
|
72
|
+
shell.kill();
|
|
73
|
+
}, timeout);
|
|
74
|
+
}
|
|
75
|
+
const color = prefix ? getNextColor() : '';
|
|
76
|
+
const coloredPrefix = prefix ? `${color}[${prefix}]${reset}` : '';
|
|
77
|
+
const writeOutput = (text, isStderr) => {
|
|
78
|
+
if (!effectiveSilent) {
|
|
79
|
+
const output = prefix ? `${coloredPrefix} ${text}` : text;
|
|
80
|
+
if (!prefix || !captureOutput) {
|
|
81
|
+
const stream = isStderr ? process.stderr : process.stdout;
|
|
82
|
+
stream.write(output);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const processStream = (stream, isStderr) => {
|
|
87
|
+
return new Promise((resolve) => {
|
|
88
|
+
if (effectiveSilent && !captureOutput) {
|
|
89
|
+
resolve('');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (!stream) {
|
|
93
|
+
resolve('');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
let buffer = '';
|
|
97
|
+
let captured = '';
|
|
98
|
+
stream.on('data', (chunk) => {
|
|
99
|
+
const text = buffer + chunk.toString();
|
|
100
|
+
const lines = text.split('\n');
|
|
101
|
+
// keep last partial line in buffer
|
|
102
|
+
buffer = lines.pop() || '';
|
|
103
|
+
// process complete lines
|
|
104
|
+
for (const line of lines) {
|
|
105
|
+
// always capture for potential error messages or captureOutput
|
|
106
|
+
captured += line + '\n';
|
|
107
|
+
// output if not silent and appropriate
|
|
108
|
+
if (!captureOutput || prefix) {
|
|
109
|
+
writeOutput(line + '\n', isStderr);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
stream.on('end', () => {
|
|
114
|
+
// output any remaining buffer
|
|
115
|
+
if (buffer) {
|
|
116
|
+
captured += buffer;
|
|
117
|
+
if (!captureOutput || prefix) {
|
|
118
|
+
writeOutput(buffer + '\n', isStderr);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
resolve(captured);
|
|
122
|
+
});
|
|
123
|
+
stream.on('error', (err) => {
|
|
124
|
+
console.error(`Error reading stream!`, err);
|
|
125
|
+
resolve(captured);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
// process both streams and wait for exit
|
|
130
|
+
const [stdout, stderr, exitCode] = await Promise.all([
|
|
131
|
+
processStream(shell.stdout, false),
|
|
132
|
+
processStream(shell.stderr, true),
|
|
133
|
+
new Promise((resolve) => {
|
|
134
|
+
shell.on('close', (code) => resolve(code));
|
|
135
|
+
}),
|
|
136
|
+
]);
|
|
137
|
+
if (timeoutId) {
|
|
138
|
+
clearTimeout(timeoutId);
|
|
139
|
+
}
|
|
140
|
+
if (detached) {
|
|
141
|
+
return { stdout: '', stderr: '' };
|
|
142
|
+
}
|
|
143
|
+
// a command we killed for exceeding its timeout failed, whatever exit code
|
|
144
|
+
// the kill happened to leave behind. shell.kill() signals the `bash -c`
|
|
145
|
+
// wrapper, and whether that surfaces as 143, as null, or as 0 depends on
|
|
146
|
+
// whether bash exec'd into the command or stayed its parent, so gating on
|
|
147
|
+
// the code alone reports a killed command as a completed one. that is not
|
|
148
|
+
// hypothetical: a production `wrangler deploy` was killed at its 10-minute
|
|
149
|
+
// timeout and this returned success, so the release printed a green check
|
|
150
|
+
// for a worker it never activated.
|
|
151
|
+
if (exitCode !== 0 || didTimeOut) {
|
|
152
|
+
const errorMsg = didTimeOut
|
|
153
|
+
? `Command timed out after ${timeout}ms: ${command}`
|
|
154
|
+
: `Command failed with exit code ${exitCode}: ${command}`;
|
|
155
|
+
if (!silent && !getIsExiting()) {
|
|
156
|
+
console.error(`run() error: ${errorMsg}: ${stderr || ''}`);
|
|
157
|
+
}
|
|
158
|
+
const error = new Error(errorMsg, { cause: { exitCode, stdout, stderr } });
|
|
159
|
+
Error.captureStackTrace(error, runInternal);
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
162
|
+
return { stdout, stderr, exitCode };
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
clearTimeout(timeoutId);
|
|
166
|
+
if (!silent && !getIsExiting()) {
|
|
167
|
+
// only show the error message, not the full object if it's our error
|
|
168
|
+
if (error instanceof Error && error.cause?.exitCode !== undefined) {
|
|
169
|
+
// this is our controlled error, already logged above
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.error(`Error running command: ${command}`, error);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (!silent && getIsExiting()) {
|
|
176
|
+
// simple message when being killed due to another error
|
|
177
|
+
const shortCmd = command.split(' ')[0];
|
|
178
|
+
console.error(`${shortCmd} exiting due to earlier error`);
|
|
179
|
+
}
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export async function waitForRun(name) {
|
|
185
|
+
if (running[name] === undefined) {
|
|
186
|
+
throw new Error(`Can't wait before task runs: ${name}`);
|
|
187
|
+
}
|
|
188
|
+
await running[name];
|
|
189
|
+
}
|
|
190
|
+
export function formatDuration(ms) {
|
|
191
|
+
const seconds = Math.floor(ms / 1000);
|
|
192
|
+
const minutes = Math.floor(seconds / 60);
|
|
193
|
+
const remainingSeconds = seconds % 60;
|
|
194
|
+
if (minutes > 0) {
|
|
195
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
196
|
+
}
|
|
197
|
+
return `${seconds}s`;
|
|
198
|
+
}
|
|
199
|
+
export async function printTiming(name, fn) {
|
|
200
|
+
const startTime = Date.now();
|
|
201
|
+
try {
|
|
202
|
+
const result = await fn();
|
|
203
|
+
const duration = Date.now() - startTime;
|
|
204
|
+
console.info(`\x1b[32m✓\x1b[0m \x1b[35m${name}\x1b[0m completed in \x1b[33m${formatDuration(duration)}\x1b[0m`);
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
const duration = Date.now() - startTime;
|
|
209
|
+
console.error(`✗ ${name} failed after ${formatDuration(duration)}`);
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
export async function runParallel(tasks, options) {
|
|
214
|
+
const activeTasks = tasks.filter((task) => !task.condition || task.condition());
|
|
215
|
+
if (activeTasks.length === 0) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
const maxParallelism = options?.maxParallelism ?? cpus().length;
|
|
219
|
+
console.info(`\nStarting parallel tasks: ${activeTasks.map((t) => t.name).join(', ')}`);
|
|
220
|
+
console.info(`Max parallelism: ${maxParallelism}`);
|
|
221
|
+
const taskStartTime = Date.now();
|
|
222
|
+
try {
|
|
223
|
+
const results = [];
|
|
224
|
+
const executing = new Set();
|
|
225
|
+
for (const task of activeTasks) {
|
|
226
|
+
const startTime = Date.now();
|
|
227
|
+
const taskPromise = task.fn().then(() => {
|
|
228
|
+
const duration = Date.now() - startTime;
|
|
229
|
+
console.info(`\x1b[32m✓\x1b[0m task: \x1b[35m${task.name}\x1b[0m completed in \x1b[33m${formatDuration(duration)}\x1b[0m`);
|
|
230
|
+
executing.delete(taskPromise);
|
|
231
|
+
}, (error) => {
|
|
232
|
+
const duration = Date.now() - startTime;
|
|
233
|
+
console.error(`✗ task: ${task.name} failed after ${formatDuration(duration)}`);
|
|
234
|
+
executing.delete(taskPromise);
|
|
235
|
+
throw error;
|
|
236
|
+
});
|
|
237
|
+
results.push(taskPromise);
|
|
238
|
+
executing.add(taskPromise);
|
|
239
|
+
if (executing.size >= maxParallelism) {
|
|
240
|
+
await Promise.race(executing);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
await Promise.all(results);
|
|
244
|
+
const totalDuration = Date.now() - taskStartTime;
|
|
245
|
+
console.info(`\nAll parallel tasks completed successfully in ${formatDuration(totalDuration)}`);
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
const totalDuration = Date.now() - taskStartTime;
|
|
249
|
+
console.error(`\nCI fail after ${formatDuration(totalDuration)} failed`);
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Typed command and subprocess helpers for Orez consumers.
|
|
3
|
+
"version": "0.16.14",
|
|
4
|
+
"description": "Typed command and subprocess helpers for Orez consumers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -10,6 +10,44 @@
|
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
12
|
"sideEffects": false,
|
|
13
|
+
"main": "dist/index.js",
|
|
14
|
+
"module": "dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"bin": {
|
|
17
|
+
"o": "./dist/cli.js"
|
|
18
|
+
},
|
|
19
|
+
"exports": {
|
|
20
|
+
"./package.json": "./package.json",
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": "./dist/index.js",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"LICENSE",
|
|
30
|
+
"README.md"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json && cp src/run-pty.mjs dist/run-pty.mjs && chmod +x dist/cli.js dist/run-pty.mjs",
|
|
34
|
+
"format": "oxfmt",
|
|
35
|
+
"format:check": "oxfmt --check",
|
|
36
|
+
"lint": "oxlint src",
|
|
37
|
+
"test": "bun test src",
|
|
38
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@clack/prompts": "^0.8.2",
|
|
42
|
+
"@lydell/node-pty": "^1.2.0-beta.3",
|
|
43
|
+
"picocolors": "^1.1.1"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/bun": "1.3.14",
|
|
47
|
+
"oxfmt": "0.28.0",
|
|
48
|
+
"oxlint": "1.43.0",
|
|
49
|
+
"typescript": "5.9.3"
|
|
50
|
+
},
|
|
13
51
|
"publishConfig": {
|
|
14
52
|
"access": "public"
|
|
15
53
|
}
|