1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const tslib_1 = require("tslib");
|
4 | const utils_1 = require("@neo-one/utils");
|
5 | const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
6 | const cli_truncate_1 = tslib_1.__importDefault(require("cli-truncate"));
|
7 | const elegant_spinner_1 = tslib_1.__importDefault(require("elegant-spinner"));
|
8 | const figures_1 = tslib_1.__importDefault(require("figures"));
|
9 | const logSymbols = tslib_1.__importStar(require("log-symbols"));
|
10 | const log_update_1 = tslib_1.__importDefault(require("log-update"));
|
11 | const rxjs_1 = require("rxjs");
|
12 | const operators_1 = require("rxjs/operators");
|
13 | const displayUtils_1 = require("./displayUtils");
|
14 | const tasks_1 = require("./tasks");
|
15 | const pointer = chalk_1.default.yellow(figures_1.default.pointer);
|
16 | const skipped = chalk_1.default.yellow(figures_1.default.arrowDown);
|
17 | const getSymbol = (task, mutableSpinners) => {
|
18 | if (mutableSpinners[task.id] == undefined) {
|
19 | mutableSpinners[task.id] = elegant_spinner_1.default();
|
20 | }
|
21 | const hasSubtasks = task.subtasks !== undefined && task.subtasks.length > 0;
|
22 | if (task.pending) {
|
23 | return hasSubtasks ? pointer : chalk_1.default.yellow(mutableSpinners[task.id]());
|
24 | }
|
25 | if (task.complete) {
|
26 | return logSymbols.success;
|
27 | }
|
28 | if (task.error !== undefined) {
|
29 | return hasSubtasks ? pointer : logSymbols.error;
|
30 | }
|
31 | if (task.skipped !== undefined) {
|
32 | return skipped;
|
33 | }
|
34 | return ' ';
|
35 | };
|
36 | const renderTasks = (tasks, spinners, level = 0) => {
|
37 | let mutableOutput = [];
|
38 | tasks.forEach((task) => {
|
39 | const skippedStr = task.skipped !== undefined ? ` ${chalk_1.default.dim('[skipped]')}` : '';
|
40 | mutableOutput.push(displayUtils_1.indentString(` ${getSymbol(task, spinners)} ${task.title}${skippedStr}`, level, { indent: ' ' }));
|
41 | if ((task.pending && task.message !== undefined) ||
|
42 | task.skipped !== false ||
|
43 | task.error !== undefined ||
|
44 | task.message !== undefined) {
|
45 | let data = task.error;
|
46 | if (data === undefined && task.skipped !== false) {
|
47 | if (typeof task.skipped === 'string') {
|
48 | data = task.skipped;
|
49 | }
|
50 | }
|
51 | else if (data === undefined) {
|
52 | data = task.message;
|
53 | }
|
54 | if (data !== undefined) {
|
55 | data = displayUtils_1.stripAnsi(data
|
56 | .trim()
|
57 | .split('\n')
|
58 | .filter(utils_1.utils.notNull)[0]);
|
59 | const out = displayUtils_1.indentString(`${figures_1.default.arrowRight} ${data}`, level, { indent: ' ' });
|
60 | mutableOutput.push(` ${chalk_1.default.gray(cli_truncate_1.default(out, process.stdout.columns - 3))}`);
|
61 | }
|
62 | }
|
63 | if ((task.pending || task.error !== undefined || !task.collapse) &&
|
64 | task.subtasks !== undefined &&
|
65 | task.subtasks.length > 0) {
|
66 | mutableOutput = mutableOutput.concat(renderTasks(task.subtasks, spinners, level + 1));
|
67 | }
|
68 | });
|
69 | return mutableOutput.join('\n');
|
70 | };
|
71 | exports.handleCLITaskList = async ({ cli, response$, progress, cancel$, }) => {
|
72 | const spinners = {};
|
73 | await response$
|
74 | .pipe(operators_1.switchMap(({ tasks }) => {
|
75 | if (tasks_1.areTasksDone(tasks)) {
|
76 | if (progress) {
|
77 | log_update_1.default(renderTasks(tasks, spinners));
|
78 | log_update_1.default.done();
|
79 | }
|
80 | else {
|
81 | cli.print(renderTasks(tasks, spinners));
|
82 | }
|
83 | cancel$.complete();
|
84 | const error = tasks_1.getTasksError(tasks);
|
85 | if (error !== undefined) {
|
86 | throw new Error(error);
|
87 | }
|
88 | return rxjs_1.EMPTY;
|
89 | }
|
90 | if (progress) {
|
91 | return rxjs_1.timer(0, 50).pipe(operators_1.map(() => {
|
92 | log_update_1.default(renderTasks(tasks, spinners));
|
93 | }));
|
94 | }
|
95 | return rxjs_1.EMPTY;
|
96 | }))
|
97 | .toPromise();
|
98 | };
|
99 |
|
100 | //# sourceMappingURL=data:application/json;charset=utf8;base64,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dmVyLXBsdWdpbi9zcmMvaGFuZGxlQ0xJVGFza0xpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgY2xpVHJ1bmNhdGUgZnJvbSAnY2xpLXRydW5jYXRlJztcbmltcG9ydCBlbGVnYW50U3Bpbm5lciBmcm9tICdlbGVnYW50LXNwaW5uZXInO1xuaW1wb3J0IGZpZ3VyZXMgZnJvbSAnZmlndXJlcyc7XG5pbXBvcnQgKiBhcyBsb2dTeW1ib2xzIGZyb20gJ2xvZy1zeW1ib2xzJztcbmltcG9ydCBsb2dVcGRhdGUgZnJvbSAnbG9nLXVwZGF0ZSc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaW5kZW50U3RyaW5nLCBzdHJpcEFuc2kgfSBmcm9tICcuL2Rpc3BsYXlVdGlscyc7XG5pbXBvcnQgeyBhcmVUYXNrc0RvbmUsIGdldFRhc2tzRXJyb3IgfSBmcm9tICcuL3Rhc2tzJztcbmltcG9ydCB7IEludGVyYWN0aXZlQ0xJLCBUYXNrU3RhdHVzIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbnR5cGUgU3Bpbm5lcnMgPSBhbnk7XG5cbmNvbnN0IHBvaW50ZXIgPSBjaGFsay55ZWxsb3coZmlndXJlcy5wb2ludGVyKTtcbmNvbnN0IHNraXBwZWQgPSBjaGFsay55ZWxsb3coZmlndXJlcy5hcnJvd0Rvd24pO1xuXG5jb25zdCBnZXRTeW1ib2wgPSAodGFzazogVGFza1N0YXR1cywgbXV0YWJsZVNwaW5uZXJzOiBTcGlubmVycykgPT4ge1xuICBpZiAobXV0YWJsZVNwaW5uZXJzW3Rhc2suaWRdID09IHVuZGVmaW5lZCkge1xuICAgIG11dGFibGVTcGlubmVyc1t0YXNrLmlkXSA9IGVsZWdhbnRTcGlubmVyKCk7XG4gIH1cblxuICBjb25zdCBoYXNTdWJ0YXNrcyA9IHRhc2suc3VidGFza3MgIT09IHVuZGVmaW5lZCAmJiB0YXNrLnN1YnRhc2tzLmxlbmd0aCA+IDA7XG4gIGlmICh0YXNrLnBlbmRpbmcpIHtcbiAgICByZXR1cm4gaGFzU3VidGFza3MgPyBwb2ludGVyIDogY2hhbGsueWVsbG93KG11dGFibGVTcGlubmVyc1t0YXNrLmlkXSgpKTtcbiAgfVxuXG4gIGlmICh0YXNrLmNvbXBsZXRlKSB7XG4gICAgcmV0dXJuIGxvZ1N5bWJvbHMuc3VjY2VzcztcbiAgfVxuXG4gIGlmICh0YXNrLmVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gaGFzU3VidGFza3MgPyBwb2ludGVyIDogbG9nU3ltYm9scy5lcnJvcjtcbiAgfVxuXG4gIGlmICh0YXNrLnNraXBwZWQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBza2lwcGVkO1xuICB9XG5cbiAgcmV0dXJuICcgJztcbn07XG5cbmNvbnN0IHJlbmRlclRhc2tzID0gKHRhc2tzOiBSZWFkb25seUFycmF5PFRhc2tTdGF0dXM+LCBzcGlubmVyczogU3Bpbm5lcnMsIGxldmVsID0gMCk6IHN0cmluZyA9PiB7XG4gIGxldCBtdXRhYmxlT3V0cHV0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIHRhc2tzLmZvckVhY2goKHRhc2spID0+IHtcbiAgICBjb25zdCBza2lwcGVkU3RyID0gdGFzay5za2lwcGVkICE9PSB1bmRlZmluZWQgPyBgICR7Y2hhbGsuZGltKCdbc2tpcHBlZF0nKX1gIDogJyc7XG5cbiAgICBtdXRhYmxlT3V0cHV0LnB1c2goXG4gICAgICBpbmRlbnRTdHJpbmcoYCAke2dldFN5bWJvbCh0YXNrLCBzcGlubmVycyl9ICR7dGFzay50aXRsZX0ke3NraXBwZWRTdHJ9YCwgbGV2ZWwsIHsgaW5kZW50OiAnICAnIH0pLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICAodGFzay5wZW5kaW5nICYmIHRhc2subWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgdGFzay5za2lwcGVkICE9PSBmYWxzZSB8fFxuICAgICAgdGFzay5lcnJvciAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICB0YXNrLm1lc3NhZ2UgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgbGV0IGRhdGEgPSB0YXNrLmVycm9yO1xuICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCAmJiB0YXNrLnNraXBwZWQgIT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGFzay5za2lwcGVkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGRhdGEgPSB0YXNrLnNraXBwZWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRhdGEgPSB0YXNrLm1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0YSA9IHN0cmlwQW5zaShcbiAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICAuZmlsdGVyKHV0aWxzLm5vdE51bGwpWzBdLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG91dCA9IGluZGVudFN0cmluZyhgJHtmaWd1cmVzLmFycm93UmlnaHR9ICR7ZGF0YX1gLCBsZXZlbCwgeyBpbmRlbnQ6ICcgICcgfSk7XG4gICAgICAgIG11dGFibGVPdXRwdXQucHVzaChgICAgJHtjaGFsay5ncmF5KGNsaVRydW5jYXRlKG91dCwgKHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgYXMgbnVtYmVyKSAtIDMpKX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAodGFzay5wZW5kaW5nIHx8IHRhc2suZXJyb3IgIT09IHVuZGVmaW5lZCB8fCAhdGFzay5jb2xsYXBzZSkgJiZcbiAgICAgIHRhc2suc3VidGFza3MgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGFzay5zdWJ0YXNrcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBtdXRhYmxlT3V0cHV0ID0gbXV0YWJsZU91dHB1dC5jb25jYXQocmVuZGVyVGFza3ModGFzay5zdWJ0YXNrcywgc3Bpbm5lcnMsIGxldmVsICsgMSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG11dGFibGVPdXRwdXQuam9pbignXFxuJyk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQ0xJVGFza0xpc3QgPSBhc3luYyAoe1xuICBjbGksXG4gIHJlc3BvbnNlJCxcbiAgcHJvZ3Jlc3MsXG4gIGNhbmNlbCQsXG59OiB7XG4gIHJlYWRvbmx5IGNsaTogSW50ZXJhY3RpdmVDTEk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgcmVhZG9ubHkgcmVzcG9uc2UkOiBPYnNlcnZhYmxlPGFueT47XG4gIHJlYWRvbmx5IHByb2dyZXNzOiBib29sZWFuO1xuICByZWFkb25seSBjYW5jZWwkOiBTdWJqZWN0PHZvaWQ+O1xufSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzcGlubmVycyA9IHt9O1xuICBhd2FpdCByZXNwb25zZSRcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeyB0YXNrcyB9KSA9PiB7XG4gICAgICAgIGlmIChhcmVUYXNrc0RvbmUodGFza3MpKSB7XG4gICAgICAgICAgaWYgKHByb2dyZXNzKSB7XG4gICAgICAgICAgICBsb2dVcGRhdGUocmVuZGVyVGFza3ModGFza3MsIHNwaW5uZXJzKSk7XG4gICAgICAgICAgICBsb2dVcGRhdGUuZG9uZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGkucHJpbnQocmVuZGVyVGFza3ModGFza3MsIHNwaW5uZXJzKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FuY2VsJC5jb21wbGV0ZSgpO1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0VGFza3NFcnJvcih0YXNrcyk7XG4gICAgICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb2dyZXNzKSB7XG4gICAgICAgICAgcmV0dXJuIHRpbWVyKDAsIDUwKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgbG9nVXBkYXRlKHJlbmRlclRhc2tzKHRhc2tzLCBzcGlubmVycykpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgIH0pLFxuICAgIClcbiAgICAudG9Qcm9taXNlKCk7XG59O1xuIl19
|