@mpis/run 0.0.19 → 0.0.21
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/bin.js +3 -0
- package/lib/bin.js.map +1 -1
- package/lib/common/manager.d.ts.map +1 -1
- package/lib/common/manager.js +15 -16
- package/lib/common/manager.js.map +1 -1
- package/lib/common/print-screen.d.ts +6 -2
- package/lib/common/print-screen.d.ts.map +1 -1
- package/lib/common/print-screen.js +44 -13
- package/lib/common/print-screen.js.map +1 -1
- package/package.json +18 -14
- package/src/bin.ts +3 -0
- package/src/common/manager.ts +15 -16
- package/src/common/print-screen.ts +50 -12
package/lib/bin.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { functionToDisposable, humanDate, prettyPrintError, registerGlobalLifecycle } from '@idlebox/common';
|
|
2
2
|
import { logger } from '@idlebox/logger';
|
|
3
3
|
import { registerNodejsExitHandler, setExitCodeIfNot, shutdown } from '@idlebox/node';
|
|
4
|
+
import { terminal } from '@idlebox/terminal-control';
|
|
4
5
|
import { channelClient } from '@mpis/client';
|
|
5
6
|
import { ProcessIPCClient } from '@mpis/server';
|
|
6
7
|
import assert from 'node:assert/strict';
|
|
@@ -31,6 +32,7 @@ switch (context.command) {
|
|
|
31
32
|
break;
|
|
32
33
|
}
|
|
33
34
|
{
|
|
35
|
+
terminal.progress.indeterminate();
|
|
34
36
|
if (context.withCleanup)
|
|
35
37
|
executeClean();
|
|
36
38
|
try {
|
|
@@ -49,6 +51,7 @@ switch (context.command) {
|
|
|
49
51
|
dumpConfig(config);
|
|
50
52
|
break;
|
|
51
53
|
}
|
|
54
|
+
terminal.progress.indeterminate();
|
|
52
55
|
initializeStdin();
|
|
53
56
|
await executeBuild().catch((e) => {
|
|
54
57
|
prettyPrintError(`failed ${context.command} project`, e);
|
package/lib/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,MAAM,GAAG,GAAG,QAAQ,CAAC;AAErB,yBAAyB,EAAE,CAAC;AAE5B,eAAe,CAAC;IACf,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC;IACrB,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAA,oBAAoB,OAAO,CAAC,OAAO,QAAQ,WAAW,EAAE,CAAC;AAEpE,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,KAAK,OAAO;QACX,YAAY,EAAE,CAAC;QACf,MAAM;IACP,KAAK,OAAO;QACX,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,MAAM;QACP,CAAC;QACD,CAAC;YACA,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,WAAW;gBAAE,YAAY,EAAE,CAAC;YAExC,IAAI,CAAC;gBACJ,MAAM,YAAY,EAAE,CAAC;gBAErB,MAAM,CAAC,KAAK,CAAA,kBAAkB,CAAC;gBAC/B,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACjB,gBAAgB,CAAC,UAAU,OAAO,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC,CAAC;gBACzD,QAAQ,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;QACF,CAAC;QACD,MAAM;IACP,KAAK,OAAO;QACX,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,MAAM;QACP,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAClC,eAAe,EAAE,CAAC;QAClB,MAAM,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;YACvC,gBAAgB,CAAC,UAAU,OAAO,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC,CAAC;YACzD,QAAQ,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,MAAM;AACR,CAAC;AAED,KAAK,UAAU,YAAY;IAC1B,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,iBAAiB,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IAExC,cAAc,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAEvB,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAA,WAAW,CAAC,CAAC,GAAG,6CAA6C,CAAC;YAC1E,OAAO;QACR,CAAC;QAED,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAE9E,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,mBAAmB,CAAC,CAAC,EAAE,iCAAiC,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACzB,mBAAmB,CAAC,CAAC,EAAE,qBAAqB,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,OAAO,CAAA,IAAI,CAAC,CAAC,GAAG,2BAA2B,KAAK,GAAG,CAAC;QAC5D,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAA,gDAAgD,CAAC;QAC7D,OAAO;IACR,CAAC;IAED,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,yBAAyB,EAAE,CAAC;QAC5B,OAAO;IACR,CAAC;IACD,MAAM,CAAC,OAAO,CAAA,4CAA4C,CAAC;IAC3D,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IAEtB,MAAM,CAAC,OAAO,CAAA,mBAAmB,CAAC;IAElC,uBAAuB,CACtB,oBAAoB,CAAC,GAAG,EAAE;QACzB,YAAY,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CACF,CAAC;IAEF,qBAAqB,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,YAAY;IACpB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAA,uBAAuB,MAAM,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,CAAC,OAAO,CAAA,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAwB,EAAE,OAAe;IACrE,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEvE,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,kCAAkC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/J,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAE9D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpB,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,gCAAgC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9J,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,8BAA8B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5J,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAA,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;IACzC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/common/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,cAAc,EAAE,MAAM,cAAc,CAAC;AAK1E,eAAO,MAAM,cAAc,gBAA0E,CAAC;AAEtG,wBAAgB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/common/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,cAAc,EAAE,MAAM,cAAc,CAAC;AAK1E,eAAO,MAAM,cAAc,gBAA0E,CAAC;AAEtG,wBAAgB,iBAAiB,SA4ChC"}
|
package/lib/common/manager.js
CHANGED
|
@@ -3,7 +3,7 @@ import { channelClient } from '@mpis/client';
|
|
|
3
3
|
import { ModeKind, ProcessIPCClient, WorkersManager } from '@mpis/server';
|
|
4
4
|
import { context } from './args.js';
|
|
5
5
|
import { config } from './config-file.js';
|
|
6
|
-
import {
|
|
6
|
+
import { formatAllErrors, overallState, reprintWatchModeError, updateMiscState } from './print-screen.js';
|
|
7
7
|
export const workersManager = new WorkersManager(context.watchMode ? ModeKind.Watch : ModeKind.Build);
|
|
8
8
|
export function initializeWorkers() {
|
|
9
9
|
let last;
|
|
@@ -22,14 +22,21 @@ export function initializeWorkers() {
|
|
|
22
22
|
worker.displayTitle = `run:${cmds.command[0]}`;
|
|
23
23
|
workersManager.addWorker(worker, last ? [last._id] : []);
|
|
24
24
|
let nodeFirstTime = true;
|
|
25
|
+
worker.onStart(() => {
|
|
26
|
+
overallState.busyWorkers.add(worker._id);
|
|
27
|
+
overallState.startedWorkers.add(worker._id);
|
|
28
|
+
updateMiscState();
|
|
29
|
+
});
|
|
25
30
|
worker.onFailure((e) => {
|
|
26
|
-
|
|
31
|
+
overallState.busyWorkers.delete(worker._id);
|
|
32
|
+
overallState.errors.set(worker._id, e);
|
|
27
33
|
reprintWatchModeError(nodeFirstTime);
|
|
28
34
|
nodeFirstTime = false;
|
|
29
35
|
sendStatus();
|
|
30
36
|
});
|
|
31
37
|
worker.onSuccess(() => {
|
|
32
|
-
|
|
38
|
+
overallState.busyWorkers.delete(worker._id);
|
|
39
|
+
overallState.errors.delete(worker._id);
|
|
33
40
|
if (nodeFirstTime) {
|
|
34
41
|
nodeFirstTime = false;
|
|
35
42
|
}
|
|
@@ -42,22 +49,14 @@ export function initializeWorkers() {
|
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
function sendStatus() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (workersManager.size() === errors.size) {
|
|
52
|
+
if (overallState.errors.size === 0) {
|
|
53
|
+
if (workersManager.size() === overallState.startedWorkers.size) {
|
|
48
54
|
channelClient.success(`all ${workersManager.size()} workers completed successfully.`);
|
|
49
|
-
}
|
|
55
|
+
} // else not all started
|
|
50
56
|
}
|
|
51
57
|
else {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
for (const [client, err] of errors.entries()) {
|
|
55
|
-
if (err) {
|
|
56
|
-
errorCnt++;
|
|
57
|
-
arr.push(client._id);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
channelClient.failed(`mpis-run: ${arr.join(', ')} (${errorCnt} / ${workersManager.size()})`, formatAllErrors());
|
|
58
|
+
const arr = overallState.errors.keys().toArray();
|
|
59
|
+
channelClient.failed(`mpis-run: ${arr.join(', ')} (${overallState.errors.size} / ${workersManager.size()})`, formatAllErrors());
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/common/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/common/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare const overallState: {
|
|
2
|
+
errors: Map<string, Error | null>;
|
|
3
|
+
busyWorkers: Set<string>;
|
|
4
|
+
startedWorkers: Set<string>;
|
|
5
|
+
};
|
|
6
|
+
export declare function updateMiscState(): void;
|
|
3
7
|
export declare function reprintWatchModeError(noClear?: boolean): void;
|
|
4
8
|
export declare function formatAllErrors(): string;
|
|
5
9
|
//# sourceMappingURL=print-screen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-screen.d.ts","sourceRoot":"","sources":["../../src/common/print-screen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"print-screen.d.ts","sourceRoot":"","sources":["../../src/common/print-screen.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAWF,wBAAgB,eAAe,SAe9B;AAED,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,OAAO,QAmBtD;AAmBD,wBAAgB,eAAe,WAyB9B"}
|
|
@@ -1,21 +1,52 @@
|
|
|
1
1
|
import { humanDate, prettyFormatError, registerGlobalLifecycle, toDisposable } from '@idlebox/common';
|
|
2
2
|
import { logger } from '@idlebox/logger';
|
|
3
|
+
import { terminal } from '@idlebox/terminal-control';
|
|
3
4
|
import { CompileError } from '@mpis/server';
|
|
4
5
|
import { context } from './args.js';
|
|
5
6
|
import { workersManager } from './manager.js';
|
|
6
|
-
let
|
|
7
|
+
let printTmr;
|
|
7
8
|
const defaultNoClear = logger.debug.isEnabled || !process.stderr.isTTY;
|
|
8
|
-
export const
|
|
9
|
+
export const overallState = {
|
|
10
|
+
errors: new Map(),
|
|
11
|
+
busyWorkers: new Set(),
|
|
12
|
+
startedWorkers: new Set(),
|
|
13
|
+
};
|
|
14
|
+
let titleControl;
|
|
15
|
+
if (!defaultNoClear) {
|
|
16
|
+
registerGlobalLifecycle(terminal.title);
|
|
17
|
+
registerGlobalLifecycle(terminal.progress);
|
|
18
|
+
titleControl = terminal.title.addComponent();
|
|
19
|
+
terminal.title.addComponent().update(`run: ${process.env.npm_lifecycle_event || context.command}`);
|
|
20
|
+
}
|
|
21
|
+
export function updateMiscState() {
|
|
22
|
+
if (!titleControl)
|
|
23
|
+
return;
|
|
24
|
+
const firstBusyWorker = overallState.busyWorkers.keys().toArray().at(-1);
|
|
25
|
+
if (firstBusyWorker) {
|
|
26
|
+
terminal.progress.indeterminate();
|
|
27
|
+
titleControl.update(`⏳ ${firstBusyWorker}`);
|
|
28
|
+
}
|
|
29
|
+
else if (overallState.errors.size > 0) {
|
|
30
|
+
terminal.progress.error();
|
|
31
|
+
titleControl.update('💥');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
terminal.progress.clear();
|
|
35
|
+
titleControl.update('✅');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
9
38
|
export function reprintWatchModeError(noClear) {
|
|
10
|
-
if (
|
|
11
|
-
clearTimeout(
|
|
12
|
-
|
|
13
|
-
|
|
39
|
+
if (printTmr)
|
|
40
|
+
clearTimeout(printTmr);
|
|
41
|
+
updateMiscState();
|
|
42
|
+
printTmr = setTimeout(() => {
|
|
43
|
+
printTmr = undefined;
|
|
44
|
+
const graph = workersManager.finalize();
|
|
14
45
|
if (context.watchMode) {
|
|
15
|
-
if (!noClear && !defaultNoClear)
|
|
16
|
-
|
|
46
|
+
if (!noClear && !defaultNoClear) {
|
|
47
|
+
terminal.reset();
|
|
48
|
+
}
|
|
17
49
|
}
|
|
18
|
-
const graph = workersManager.finalize();
|
|
19
50
|
console.error('%s\n%s', graph.debugFormatList(), graph.debugFormatSummary());
|
|
20
51
|
printAllErrors();
|
|
21
52
|
}, 50);
|
|
@@ -25,7 +56,7 @@ const start = Date.now();
|
|
|
25
56
|
function printAllErrors() {
|
|
26
57
|
execute_index++;
|
|
27
58
|
const execTip = `exec: ${execute_index} / ${humanDate.delta(Date.now() - start)}`;
|
|
28
|
-
const numFailed = [...errors.values().filter((e) => !!e)].length;
|
|
59
|
+
const numFailed = [...overallState.errors.values().filter((e) => !!e)].length;
|
|
29
60
|
if (numFailed !== 0) {
|
|
30
61
|
console.error(formatAllErrors());
|
|
31
62
|
logger.error(`💥 ${numFailed} of ${workersManager.size()} worker failed (${execTip})`);
|
|
@@ -38,7 +69,7 @@ export function formatAllErrors() {
|
|
|
38
69
|
const lines = [];
|
|
39
70
|
const colorEnabled = logger.colorEnabled;
|
|
40
71
|
let index = 0;
|
|
41
|
-
for (const [
|
|
72
|
+
for (const [wId, error] of overallState.errors) {
|
|
42
73
|
if (error === null)
|
|
43
74
|
continue;
|
|
44
75
|
index++;
|
|
@@ -47,7 +78,7 @@ export function formatAllErrors() {
|
|
|
47
78
|
tag = ` (${error.name})`;
|
|
48
79
|
}
|
|
49
80
|
const banner = colorEnabled ? `\x1B[48;5;9m ERROR ${index} \x1B[0m` : `ERROR ${index}`;
|
|
50
|
-
lines.push(`\n${banner}${tag} ${
|
|
81
|
+
lines.push(`\n${banner}${tag} ${wId}`);
|
|
51
82
|
if (error instanceof CompileError) {
|
|
52
83
|
lines.push(error.toString());
|
|
53
84
|
}
|
|
@@ -57,7 +88,7 @@ export function formatAllErrors() {
|
|
|
57
88
|
else {
|
|
58
89
|
lines.push(`can not handle error: ${error}`);
|
|
59
90
|
}
|
|
60
|
-
lines.push(`\n${banner} ${
|
|
91
|
+
lines.push(`\n${banner} ${wId}`);
|
|
61
92
|
}
|
|
62
93
|
return lines.join('\n');
|
|
63
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-screen.js","sourceRoot":"","sources":["../../src/common/print-screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"print-screen.js","sourceRoot":"","sources":["../../src/common/print-screen.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mpis/run",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.21",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"bin": {
|
|
7
7
|
"run": "./loader/bin.js",
|
|
@@ -12,28 +12,32 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"split-cmd": "^1.1.0",
|
|
15
|
-
"@
|
|
16
|
-
"@idlebox/
|
|
17
|
-
"@idlebox/
|
|
18
|
-
"@
|
|
19
|
-
"@
|
|
20
|
-
"@mpis/
|
|
21
|
-
"@
|
|
22
|
-
"@idlebox/source-map-support": "^0.0.
|
|
15
|
+
"@idlebox/args": "^0.0.25",
|
|
16
|
+
"@idlebox/common": "^1.5.16",
|
|
17
|
+
"@idlebox/node": "^1.4.26",
|
|
18
|
+
"@build-script/rushstack-config-loader": "^0.0.32",
|
|
19
|
+
"@idlebox/logger": "^0.0.19",
|
|
20
|
+
"@mpis/client": "^0.0.18",
|
|
21
|
+
"@mpis/server": "^0.0.17",
|
|
22
|
+
"@idlebox/source-map-support": "^0.0.18",
|
|
23
|
+
"@idlebox/terminal-control": "^0.0.2"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@types/node": "^25.0.8",
|
|
26
|
-
"@
|
|
27
|
-
"@
|
|
27
|
+
"@idlebox/esbuild-executer": "^0.0.13",
|
|
28
|
+
"@build-script/baseline-rig": "latest"
|
|
28
29
|
},
|
|
29
30
|
"sideEffects": false,
|
|
30
31
|
"license": "MIT",
|
|
31
32
|
"author": "GongT <admin@gongt.me>",
|
|
32
|
-
"repository":
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/GongT/baobao",
|
|
36
|
+
"directory": "@mpis/run"
|
|
37
|
+
},
|
|
33
38
|
"scripts": {
|
|
34
39
|
"build": "node loader/bin.devel.js build",
|
|
35
40
|
"watch": "node loader/bin.devel.js watch",
|
|
36
|
-
"clean": "node loader/bin.devel.js clean"
|
|
37
|
-
"lint": "internal-lint"
|
|
41
|
+
"clean": "node loader/bin.devel.js clean"
|
|
38
42
|
}
|
|
39
43
|
}
|
package/src/bin.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { functionToDisposable, humanDate, prettyPrintError, registerGlobalLifecycle } from '@idlebox/common';
|
|
2
2
|
import { logger } from '@idlebox/logger';
|
|
3
3
|
import { registerNodejsExitHandler, setExitCodeIfNot, shutdown } from '@idlebox/node';
|
|
4
|
+
import { terminal } from '@idlebox/terminal-control';
|
|
4
5
|
import { channelClient } from '@mpis/client';
|
|
5
6
|
import { ProcessIPCClient } from '@mpis/server';
|
|
6
7
|
import assert from 'node:assert/strict';
|
|
@@ -36,6 +37,7 @@ switch (context.command) {
|
|
|
36
37
|
break;
|
|
37
38
|
}
|
|
38
39
|
{
|
|
40
|
+
terminal.progress.indeterminate();
|
|
39
41
|
if (context.withCleanup) executeClean();
|
|
40
42
|
|
|
41
43
|
try {
|
|
@@ -54,6 +56,7 @@ switch (context.command) {
|
|
|
54
56
|
dumpConfig(config);
|
|
55
57
|
break;
|
|
56
58
|
}
|
|
59
|
+
terminal.progress.indeterminate();
|
|
57
60
|
initializeStdin();
|
|
58
61
|
await executeBuild().catch((e: Error) => {
|
|
59
62
|
prettyPrintError(`failed ${context.command} project`, e);
|
package/src/common/manager.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { channelClient } from '@mpis/client';
|
|
|
3
3
|
import { ModeKind, ProcessIPCClient, WorkersManager } from '@mpis/server';
|
|
4
4
|
import { context } from './args.js';
|
|
5
5
|
import { config } from './config-file.js';
|
|
6
|
-
import {
|
|
6
|
+
import { formatAllErrors, overallState, reprintWatchModeError, updateMiscState } from './print-screen.js';
|
|
7
7
|
|
|
8
8
|
export const workersManager = new WorkersManager(context.watchMode ? ModeKind.Watch : ModeKind.Build);
|
|
9
9
|
|
|
@@ -26,14 +26,21 @@ export function initializeWorkers() {
|
|
|
26
26
|
workersManager.addWorker(worker, last ? [last._id] : []);
|
|
27
27
|
|
|
28
28
|
let nodeFirstTime = true;
|
|
29
|
+
worker.onStart(() => {
|
|
30
|
+
overallState.busyWorkers.add(worker._id);
|
|
31
|
+
overallState.startedWorkers.add(worker._id);
|
|
32
|
+
updateMiscState();
|
|
33
|
+
});
|
|
29
34
|
worker.onFailure((e) => {
|
|
30
|
-
|
|
35
|
+
overallState.busyWorkers.delete(worker._id);
|
|
36
|
+
overallState.errors.set(worker._id, e);
|
|
31
37
|
reprintWatchModeError(nodeFirstTime);
|
|
32
38
|
nodeFirstTime = false;
|
|
33
39
|
sendStatus();
|
|
34
40
|
});
|
|
35
41
|
worker.onSuccess(() => {
|
|
36
|
-
|
|
42
|
+
overallState.busyWorkers.delete(worker._id);
|
|
43
|
+
overallState.errors.delete(worker._id);
|
|
37
44
|
if (nodeFirstTime) {
|
|
38
45
|
nodeFirstTime = false;
|
|
39
46
|
} else {
|
|
@@ -47,20 +54,12 @@ export function initializeWorkers() {
|
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
function sendStatus() {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (workersManager.size() === errors.size) {
|
|
57
|
+
if (overallState.errors.size === 0) {
|
|
58
|
+
if (workersManager.size() === overallState.startedWorkers.size) {
|
|
53
59
|
channelClient.success(`all ${workersManager.size()} workers completed successfully.`);
|
|
54
|
-
}
|
|
60
|
+
} // else not all started
|
|
55
61
|
} else {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
for (const [client, err] of errors.entries()) {
|
|
59
|
-
if (err) {
|
|
60
|
-
errorCnt++;
|
|
61
|
-
arr.push(client._id);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
channelClient.failed(`mpis-run: ${arr.join(', ')} (${errorCnt} / ${workersManager.size()})`, formatAllErrors());
|
|
62
|
+
const arr = overallState.errors.keys().toArray();
|
|
63
|
+
channelClient.failed(`mpis-run: ${arr.join(', ')} (${overallState.errors.size} / ${workersManager.size()})`, formatAllErrors());
|
|
65
64
|
}
|
|
66
65
|
}
|
|
@@ -1,22 +1,60 @@
|
|
|
1
1
|
import { humanDate, prettyFormatError, registerGlobalLifecycle, toDisposable } from '@idlebox/common';
|
|
2
2
|
import { logger } from '@idlebox/logger';
|
|
3
|
-
import {
|
|
3
|
+
import { terminal, type ITitleControl } from '@idlebox/terminal-control';
|
|
4
|
+
import { CompileError } from '@mpis/server';
|
|
4
5
|
import { context } from './args.js';
|
|
5
6
|
import { workersManager } from './manager.js';
|
|
6
7
|
|
|
7
|
-
let
|
|
8
|
+
let printTmr: NodeJS.Timeout | undefined;
|
|
8
9
|
const defaultNoClear = logger.debug.isEnabled || !process.stderr.isTTY;
|
|
9
|
-
export const
|
|
10
|
+
export const overallState = {
|
|
11
|
+
errors: new Map<string, Error | null>(),
|
|
12
|
+
busyWorkers: new Set<string>(),
|
|
13
|
+
startedWorkers: new Set<string>(),
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
let titleControl: ITitleControl | undefined;
|
|
17
|
+
if (!defaultNoClear) {
|
|
18
|
+
registerGlobalLifecycle(terminal.title);
|
|
19
|
+
registerGlobalLifecycle(terminal.progress);
|
|
20
|
+
|
|
21
|
+
titleControl = terminal.title.addComponent();
|
|
22
|
+
terminal.title.addComponent().update(`run: ${process.env.npm_lifecycle_event || context.command}`);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function updateMiscState() {
|
|
26
|
+
if (!titleControl) return;
|
|
27
|
+
|
|
28
|
+
const firstBusyWorker = overallState.busyWorkers.keys().toArray().at(-1);
|
|
29
|
+
|
|
30
|
+
if (firstBusyWorker) {
|
|
31
|
+
terminal.progress.indeterminate();
|
|
32
|
+
titleControl.update(`⏳ ${firstBusyWorker}`);
|
|
33
|
+
} else if (overallState.errors.size > 0) {
|
|
34
|
+
terminal.progress.error();
|
|
35
|
+
titleControl.update('💥');
|
|
36
|
+
} else {
|
|
37
|
+
terminal.progress.clear();
|
|
38
|
+
titleControl.update('✅');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
10
41
|
|
|
11
42
|
export function reprintWatchModeError(noClear?: boolean) {
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
43
|
+
if (printTmr) clearTimeout(printTmr);
|
|
44
|
+
|
|
45
|
+
updateMiscState();
|
|
46
|
+
|
|
47
|
+
printTmr = setTimeout(() => {
|
|
48
|
+
printTmr = undefined;
|
|
49
|
+
|
|
50
|
+
const graph = workersManager.finalize();
|
|
15
51
|
|
|
16
52
|
if (context.watchMode) {
|
|
17
|
-
if (!noClear && !defaultNoClear)
|
|
53
|
+
if (!noClear && !defaultNoClear) {
|
|
54
|
+
terminal.reset();
|
|
55
|
+
}
|
|
18
56
|
}
|
|
19
|
-
|
|
57
|
+
|
|
20
58
|
console.error('%s\n%s', graph.debugFormatList(), graph.debugFormatSummary());
|
|
21
59
|
printAllErrors();
|
|
22
60
|
}, 50);
|
|
@@ -29,7 +67,7 @@ function printAllErrors() {
|
|
|
29
67
|
execute_index++;
|
|
30
68
|
const execTip = `exec: ${execute_index} / ${humanDate.delta(Date.now() - start)}`;
|
|
31
69
|
|
|
32
|
-
const numFailed = [...errors.values().filter((e) => !!e)].length;
|
|
70
|
+
const numFailed = [...overallState.errors.values().filter((e) => !!e)].length;
|
|
33
71
|
if (numFailed !== 0) {
|
|
34
72
|
console.error(formatAllErrors());
|
|
35
73
|
|
|
@@ -43,7 +81,7 @@ export function formatAllErrors() {
|
|
|
43
81
|
const lines: string[] = [];
|
|
44
82
|
const colorEnabled = logger.colorEnabled;
|
|
45
83
|
let index = 0;
|
|
46
|
-
for (const [
|
|
84
|
+
for (const [wId, error] of overallState.errors) {
|
|
47
85
|
if (error === null) continue;
|
|
48
86
|
|
|
49
87
|
index++;
|
|
@@ -53,7 +91,7 @@ export function formatAllErrors() {
|
|
|
53
91
|
tag = ` (${error.name})`;
|
|
54
92
|
}
|
|
55
93
|
const banner = colorEnabled ? `\x1B[48;5;9m ERROR ${index} \x1B[0m` : `ERROR ${index}`;
|
|
56
|
-
lines.push(`\n${banner}${tag} ${
|
|
94
|
+
lines.push(`\n${banner}${tag} ${wId}`);
|
|
57
95
|
if (error instanceof CompileError) {
|
|
58
96
|
lines.push(error.toString());
|
|
59
97
|
} else if (error instanceof Error) {
|
|
@@ -61,7 +99,7 @@ export function formatAllErrors() {
|
|
|
61
99
|
} else {
|
|
62
100
|
lines.push(`can not handle error: ${error}`);
|
|
63
101
|
}
|
|
64
|
-
lines.push(`\n${banner} ${
|
|
102
|
+
lines.push(`\n${banner} ${wId}`);
|
|
65
103
|
}
|
|
66
104
|
return lines.join('\n');
|
|
67
105
|
}
|