@jujulego/jill 1.1.15 → 1.1.19
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/dist/commands/each.command.d.ts +16 -0
- package/dist/commands/each.command.d.ts.map +1 -0
- package/dist/commands/each.command.js +203 -0
- package/dist/commands/each.command.js.map +1 -0
- package/dist/commands/info.command.d.ts +8 -0
- package/dist/commands/info.command.d.ts.map +1 -0
- package/dist/commands/info.command.js +178 -0
- package/dist/commands/info.command.js.map +1 -0
- package/dist/commands/list.command.d.ts +21 -0
- package/dist/commands/list.command.d.ts.map +1 -0
- package/dist/commands/list.command.js +251 -0
- package/dist/commands/list.command.js.map +1 -0
- package/dist/commands/run.command.d.ts +12 -0
- package/dist/commands/run.command.d.ts.map +1 -0
- package/dist/commands/run.command.js +111 -0
- package/dist/commands/run.command.js.map +1 -0
- package/dist/index.d.ts +4 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -26
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +53 -134
- package/dist/main.js.map +1 -0
- package/dist/myr/commands/kill.command.d.ts +10 -0
- package/dist/myr/commands/kill.command.d.ts.map +1 -0
- package/dist/myr/commands/kill.command.js +89 -0
- package/dist/myr/commands/kill.command.js.map +1 -0
- package/dist/myr/commands/list.command.d.ts +17 -0
- package/dist/myr/commands/list.command.d.ts.map +1 -0
- package/dist/myr/commands/list.command.js +167 -0
- package/dist/myr/commands/list.command.js.map +1 -0
- package/dist/myr/commands/logs.command.d.ts +10 -0
- package/dist/myr/commands/logs.command.d.ts.map +1 -0
- package/dist/myr/commands/logs.command.js +165 -0
- package/dist/myr/commands/logs.command.js.map +1 -0
- package/dist/myr/commands/spawn.command.d.ts +10 -0
- package/dist/myr/commands/spawn.command.d.ts.map +1 -0
- package/dist/myr/commands/spawn.command.js +84 -0
- package/dist/myr/commands/spawn.command.js.map +1 -0
- package/dist/myr/commands/stop.command.d.ts +6 -0
- package/dist/myr/commands/stop.command.d.ts.map +1 -0
- package/dist/myr/commands/stop.command.js +80 -0
- package/dist/myr/commands/stop.command.js.map +1 -0
- package/dist/myr/myr-client.d.ts +11 -5
- package/dist/myr/myr-client.d.ts.map +1 -0
- package/dist/myr/myr-client.js +291 -368
- package/dist/myr/myr-client.js.map +1 -0
- package/dist/myr/myr.command.d.ts +8 -0
- package/dist/myr/myr.command.d.ts.map +1 -0
- package/dist/myr/myr.command.js +42 -0
- package/dist/myr/myr.command.js.map +1 -0
- package/dist/myr/myr.process.d.ts.map +1 -0
- package/dist/myr/myr.process.js +41 -6
- package/dist/myr/myr.process.js.map +1 -0
- package/dist/myr/watch.command.d.ts +12 -0
- package/dist/myr/watch.command.d.ts.map +1 -0
- package/dist/myr/watch.command.js +169 -0
- package/dist/myr/watch.command.js.map +1 -0
- package/dist/task-logger.d.ts.map +1 -0
- package/dist/task-logger.js +28 -17
- package/dist/task-logger.js.map +1 -0
- package/package.json +29 -23
- package/dist/commands/each.d.ts +0 -12
- package/dist/commands/each.js +0 -74
- package/dist/commands/info.d.ts +0 -5
- package/dist/commands/info.js +0 -42
- package/dist/commands/list.d.ts +0 -15
- package/dist/commands/list.js +0 -119
- package/dist/commands/run.d.ts +0 -9
- package/dist/commands/run.js +0 -43
- package/dist/filters/affected.d.ts +0 -10
- package/dist/filters/affected.js +0 -81
- package/dist/filters/filter.d.ts +0 -8
- package/dist/filters/filter.js +0 -35
- package/dist/filters/index.d.ts +0 -2
- package/dist/filters/index.js +0 -21
- package/dist/logger.d.ts +0 -32
- package/dist/logger.js +0 -189
- package/dist/myr/command.d.ts +0 -2
- package/dist/myr/command.js +0 -52
- package/dist/myr/commands/kill.d.ts +0 -5
- package/dist/myr/commands/kill.js +0 -34
- package/dist/myr/commands/list.d.ts +0 -10
- package/dist/myr/commands/list.js +0 -91
- package/dist/myr/commands/spawn.d.ts +0 -7
- package/dist/myr/commands/spawn.js +0 -39
- package/dist/myr/commands/stop.d.ts +0 -2
- package/dist/myr/commands/stop.js +0 -31
- package/dist/myr/watch.d.ts +0 -8
- package/dist/myr/watch.js +0 -79
- package/dist/pipeline.d.ts +0 -9
- package/dist/pipeline.js +0 -52
- package/dist/utils/cli-list.d.ts +0 -15
- package/dist/utils/cli-list.js +0 -86
- package/dist/utils/deps-tree.d.ts +0 -2
- package/dist/utils/deps-tree.js +0 -51
- package/dist/wrapper.d.ts +0 -9
- package/dist/wrapper.js +0 -38
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Arguments, Builder, ProjectArgs, ProjectCommand } from '@jujulego/jill-common';
|
|
2
|
+
import { WorkspaceDepsMode } from '@jujulego/jill-core';
|
|
3
|
+
export interface EachArgs extends ProjectArgs {
|
|
4
|
+
script: string;
|
|
5
|
+
'deps-mode': WorkspaceDepsMode;
|
|
6
|
+
private: boolean | undefined;
|
|
7
|
+
affected: string | undefined;
|
|
8
|
+
'affected-rev-sort': string | undefined;
|
|
9
|
+
'affected-rev-fallback': string;
|
|
10
|
+
}
|
|
11
|
+
export declare class EachCommand extends ProjectCommand<EachArgs> {
|
|
12
|
+
readonly name = "each <script>";
|
|
13
|
+
readonly description = "Run script on selected workspaces";
|
|
14
|
+
protected define<T, U>(builder: Builder<T, U>): Builder<T, U & EachArgs>;
|
|
15
|
+
protected run(args: Arguments<EachArgs>): Promise<number>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/each.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,OAAO,EAAoB,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1H,OAAO,EAA4B,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKlF,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;IAE/B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAGD,qBAAa,WAAY,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAEvD,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,uCAAuC;IAG3D,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;cAsCxD,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CA0DhE","file":"each.command.d.ts","sourcesContent":["import { AffectedFilter, Arguments, Builder, Filter, Pipeline, ProjectArgs, ProjectCommand } from '@jujulego/jill-common';\nimport { Task, TaskSet, Workspace, WorkspaceDepsMode } from '@jujulego/jill-core';\n\nimport { TaskLogger } from '../task-logger';\n\n// Types\nexport interface EachArgs extends ProjectArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n\n private: boolean | undefined;\n affected: string | undefined;\n 'affected-rev-sort': string | undefined;\n 'affected-rev-fallback': string;\n}\n\n// Command\nexport class EachCommand extends ProjectCommand<EachArgs> {\n // Attributes\n readonly name = 'each <script>';\n readonly description = 'Run script on selected workspaces';\n\n // Methods\n protected define<T, U>(builder: Builder<T, U>): Builder<T, U & EachArgs> {\n return super.define(y => builder(y)\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n );\n }\n\n protected async run(args: Arguments<EachArgs>): Promise<number> {\n await super.run(args);\n\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args['affected-rev-fallback'],\n args['affected-rev-sort']\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n workspaces.push(wks);\n }\n\n if (workspaces.length === 0) {\n this.spinner.fail('No workspace found !');\n return 1;\n }\n\n this.spinner.stop();\n this.logger.verbose(`Will run ${args.script} in ${workspaces.map(wks => wks.name).join(', ')}`);\n\n // Run tasks\n const set = new TaskSet();\n const tasks: Task[] = [];\n\n for (const wks of workspaces) {\n const task = await wks.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args['deps-mode']\n });\n\n tasks.push(task);\n set.add(task);\n }\n\n const tlogger = new TaskLogger();\n tlogger.on('spin-multiple', (count) => `Working in ${count} packages ...`);\n tlogger.on('spin-simple', (tsk) => tasks.includes(tsk) ? `Running ${args.script} in ${tsk.context.workspace?.name} ...` : `Building ${tsk.context.workspace?.name} ...`);\n tlogger.on('fail', (tsk) => tasks.includes(tsk) ? `${tsk.context.workspace?.name} ${args.script} failed` : `Failed to build ${tsk.context.workspace?.name}`);\n tlogger.on('succeed', (tsk) => tasks.includes(tsk) ? `${tsk.context.workspace?.name} ${args.script} done` : `${tsk.context.workspace?.name} built`);\n tlogger.connect(set);\n\n set.start();\n const [result] = await set.waitFor('finished');\n return result.failed === 0 ? 0 : 1;\n }\n}\n"]}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EachCommand = void 0;
|
|
7
|
+
|
|
8
|
+
var _jillCommon = require("@jujulego/jill-common");
|
|
9
|
+
|
|
10
|
+
var _jillCore = require("@jujulego/jill-core");
|
|
11
|
+
|
|
12
|
+
var _taskLogger = require("../task-logger");
|
|
13
|
+
|
|
14
|
+
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) {
|
|
16
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
17
|
+
resolve(value);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
22
|
+
function fulfilled(value) {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function rejected(value) {
|
|
31
|
+
try {
|
|
32
|
+
step(generator["throw"](value));
|
|
33
|
+
} catch (e) {
|
|
34
|
+
reject(e);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function step(result) {
|
|
39
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {
|
|
47
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
48
|
+
var m = o[Symbol.asyncIterator],
|
|
49
|
+
i;
|
|
50
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
|
|
51
|
+
return this;
|
|
52
|
+
}, i);
|
|
53
|
+
|
|
54
|
+
function verb(n) {
|
|
55
|
+
i[n] = o[n] && function (v) {
|
|
56
|
+
return new Promise(function (resolve, reject) {
|
|
57
|
+
v = o[n](v), settle(resolve, reject, v.done, v.value);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function settle(resolve, reject, d, v) {
|
|
63
|
+
Promise.resolve(v).then(function (v) {
|
|
64
|
+
resolve({
|
|
65
|
+
value: v,
|
|
66
|
+
done: d
|
|
67
|
+
});
|
|
68
|
+
}, reject);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// Command
|
|
73
|
+
class EachCommand extends _jillCommon.ProjectCommand {
|
|
74
|
+
constructor() {
|
|
75
|
+
super(...arguments); // Attributes
|
|
76
|
+
|
|
77
|
+
this.name = 'each <script>';
|
|
78
|
+
this.description = 'Run script on selected workspaces';
|
|
79
|
+
} // Methods
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
define(builder) {
|
|
83
|
+
return super.define(y => builder(y).positional('script', {
|
|
84
|
+
type: 'string',
|
|
85
|
+
demandOption: true
|
|
86
|
+
}).option('deps-mode', {
|
|
87
|
+
choice: ['all', 'prod', 'none'],
|
|
88
|
+
default: 'all',
|
|
89
|
+
desc: 'Dependency selection mode:\n' + ' - all = dependencies AND devDependencies\n' + ' - prod = dependencies\n' + ' - none = nothing'
|
|
90
|
+
}).option('private', {
|
|
91
|
+
type: 'boolean',
|
|
92
|
+
group: 'Filters:',
|
|
93
|
+
desc: 'Print only private workspaces'
|
|
94
|
+
}).option('affected', {
|
|
95
|
+
alias: 'a',
|
|
96
|
+
type: 'string',
|
|
97
|
+
coerce: rev => rev === '' ? 'master' : rev,
|
|
98
|
+
group: 'Affected:',
|
|
99
|
+
desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\n' + 'Replaces %name by workspace name.'
|
|
100
|
+
}).option('affected-rev-sort', {
|
|
101
|
+
type: 'string',
|
|
102
|
+
group: 'Affected:',
|
|
103
|
+
desc: 'Sort applied to git tag / git branch command'
|
|
104
|
+
}).option('affected-rev-fallback', {
|
|
105
|
+
type: 'string',
|
|
106
|
+
default: 'master',
|
|
107
|
+
group: 'Affected:',
|
|
108
|
+
desc: 'Fallback revision, used if no revision matching the given format is found'
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
run(args) {
|
|
113
|
+
const _super = Object.create(null, {
|
|
114
|
+
run: {
|
|
115
|
+
get: () => super.run
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
var e_1, _a;
|
|
120
|
+
|
|
121
|
+
var _b;
|
|
122
|
+
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
yield _super.run.call(this, args); // Setup pipeline
|
|
125
|
+
|
|
126
|
+
const pipeline = new _jillCommon.Pipeline();
|
|
127
|
+
pipeline.add(_jillCommon.Filter.scripts([args.script]));
|
|
128
|
+
|
|
129
|
+
if (args.private !== undefined) {
|
|
130
|
+
pipeline.add(_jillCommon.Filter.privateWorkspace(args.private));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (args.affected !== undefined) {
|
|
134
|
+
pipeline.add(new _jillCommon.AffectedFilter(args.affected, args['affected-rev-fallback'], args['affected-rev-sort']));
|
|
135
|
+
} // Filter
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
const workspaces = [];
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
for (var _c = __asyncValues(pipeline.filter(this.project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {
|
|
142
|
+
const wks = _d.value;
|
|
143
|
+
workspaces.push(wks);
|
|
144
|
+
}
|
|
145
|
+
} catch (e_1_1) {
|
|
146
|
+
e_1 = {
|
|
147
|
+
error: e_1_1
|
|
148
|
+
};
|
|
149
|
+
} finally {
|
|
150
|
+
try {
|
|
151
|
+
if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
|
|
152
|
+
} finally {
|
|
153
|
+
if (e_1) throw e_1.error;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (workspaces.length === 0) {
|
|
158
|
+
this.spinner.fail('No workspace found !');
|
|
159
|
+
return 1;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
this.spinner.stop();
|
|
163
|
+
this.logger.verbose(`Will run ${args.script} in ${workspaces.map(wks => wks.name).join(', ')}`); // Run tasks
|
|
164
|
+
|
|
165
|
+
const set = new _jillCore.TaskSet();
|
|
166
|
+
const tasks = [];
|
|
167
|
+
|
|
168
|
+
for (const wks of workspaces) {
|
|
169
|
+
const task = yield wks.run(args.script, (_b = args['--']) === null || _b === void 0 ? void 0 : _b.map(arg => arg.toString()), {
|
|
170
|
+
buildDeps: args['deps-mode']
|
|
171
|
+
});
|
|
172
|
+
tasks.push(task);
|
|
173
|
+
set.add(task);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const tlogger = new _taskLogger.TaskLogger();
|
|
177
|
+
tlogger.on('spin-multiple', count => `Working in ${count} packages ...`);
|
|
178
|
+
tlogger.on('spin-simple', tsk => {
|
|
179
|
+
var _a, _b;
|
|
180
|
+
|
|
181
|
+
return tasks.includes(tsk) ? `Running ${args.script} in ${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ...` : `Building ${(_b = tsk.context.workspace) === null || _b === void 0 ? void 0 : _b.name} ...`;
|
|
182
|
+
});
|
|
183
|
+
tlogger.on('fail', tsk => {
|
|
184
|
+
var _a, _b;
|
|
185
|
+
|
|
186
|
+
return tasks.includes(tsk) ? `${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ${args.script} failed` : `Failed to build ${(_b = tsk.context.workspace) === null || _b === void 0 ? void 0 : _b.name}`;
|
|
187
|
+
});
|
|
188
|
+
tlogger.on('succeed', tsk => {
|
|
189
|
+
var _a, _b;
|
|
190
|
+
|
|
191
|
+
return tasks.includes(tsk) ? `${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ${args.script} done` : `${(_b = tsk.context.workspace) === null || _b === void 0 ? void 0 : _b.name} built`;
|
|
192
|
+
});
|
|
193
|
+
tlogger.connect(set);
|
|
194
|
+
set.start();
|
|
195
|
+
const [result] = yield set.waitFor('finished');
|
|
196
|
+
return result.failed === 0 ? 0 : 1;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
exports.EachCommand = EachCommand;
|
|
203
|
+
//# sourceMappingURL=each.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/each.command.ts","commands/each.command.js"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","EachCommand","ProjectCommand","constructor","arguments","name","description","define","builder","y","positional","type","demandOption","option","choice","default","desc","group","alias","coerce","rev","run","args","_super","Object","create","get","e_1","_a","_b","pipeline","Pipeline","add","Filter","scripts","script","private","undefined","privateWorkspace","affected","AffectedFilter","workspaces","_c","filter","project","_d","wks","push","e_1_1","error","return","length","spinner","fail","stop","logger","verbose","map","join","set","TaskSet","tasks","task","arg","toString","buildDeps","tlogger","TaskLogger","on","count","tsk","includes","context","workspace","connect","start","waitFor","failed"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;ACHA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA4B,UAAUC,OAAV,EAAmBC,UAAnB,EAA+BC,CAA/B,EAAkCC,SAAlC,EAA6C;AACrF,WAASC,KAAT,CAAeC,KAAf,EAAsB;AAAE,WAAOA,KAAK,YAAYH,CAAjB,GAAqBG,KAArB,GAA6B,IAAIH,CAAJ,CAAM,UAAUI,OAAV,EAAmB;AAAEA,MAAAA,OAAO,CAACD,KAAD,CAAP;AAAiB,KAA5C,CAApC;AAAoF;;AAC5G,SAAO,KAAKH,CAAC,KAAKA,CAAC,GAAGK,OAAT,CAAN,EAAyB,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AACvD,aAASC,SAAT,CAAmBJ,KAAnB,EAA0B;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAACQ,IAAV,CAAeN,KAAf,CAAD,CAAJ;AAA8B,OAApC,CAAqC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC3F,aAASC,QAAT,CAAkBR,KAAlB,EAAyB;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAAC,OAAD,CAAT,CAAmBE,KAAnB,CAAD,CAAJ;AAAkC,OAAxC,CAAyC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC9F,aAASF,IAAT,CAAcI,MAAd,EAAsB;AAAEA,MAAAA,MAAM,CAACC,IAAP,GAAcT,OAAO,CAACQ,MAAM,CAACT,KAAR,CAArB,GAAsCD,KAAK,CAACU,MAAM,CAACT,KAAR,CAAL,CAAoBW,IAApB,CAAyBP,SAAzB,EAAoCI,QAApC,CAAtC;AAAsF;;AAC9GH,IAAAA,IAAI,CAAC,CAACP,SAAS,GAAGA,SAAS,CAACc,KAAV,CAAgBjB,OAAhB,EAAyBC,UAAU,IAAI,EAAvC,CAAb,EAAyDU,IAAzD,EAAD,CAAJ;AACH,GALM,CAAP;AAMH,CARD;;AASA,IAAIO,aAAa,GAAI,UAAQ,SAAKA,aAAd,IAAgC,UAAUC,CAAV,EAAa;AAC7D,MAAI,CAACC,MAAM,CAACC,aAAZ,EAA2B,MAAM,IAAIC,SAAJ,CAAc,sCAAd,CAAN;AAC3B,MAAIC,CAAC,GAAGJ,CAAC,CAACC,MAAM,CAACC,aAAR,CAAT;AAAA,MAAiCG,CAAjC;AACA,SAAOD,CAAC,GAAGA,CAAC,CAACE,IAAF,CAAON,CAAP,CAAH,IAAgBA,CAAC,GAAG,OAAOO,QAAP,KAAoB,UAApB,GAAiCA,QAAQ,CAACP,CAAD,CAAzC,GAA+CA,CAAC,CAACC,MAAM,CAACO,QAAR,CAAD,EAAnD,EAAyEH,CAAC,GAAG,EAA7E,EAAiFI,IAAI,CAAC,MAAD,CAArF,EAA+FA,IAAI,CAAC,OAAD,CAAnG,EAA8GA,IAAI,CAAC,QAAD,CAAlH,EAA8HJ,CAAC,CAACJ,MAAM,CAACC,aAAR,CAAD,GAA0B,YAAY;AAAE,WAAO,IAAP;AAAc,GAApL,EAAsLG,CAAtM,CAAR;;AACA,WAASI,IAAT,CAAcC,CAAd,EAAiB;AAAEL,IAAAA,CAAC,CAACK,CAAD,CAAD,GAAOV,CAAC,CAACU,CAAD,CAAD,IAAQ,UAAUC,CAAV,EAAa;AAAE,aAAO,IAAIvB,OAAJ,CAAY,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AAAEsB,QAAAA,CAAC,GAAGX,CAAC,CAACU,CAAD,CAAD,CAAKC,CAAL,CAAJ,EAAaC,MAAM,CAACzB,OAAD,EAAUE,MAAV,EAAkBsB,CAAC,CAACf,IAApB,EAA0Be,CAAC,CAACzB,KAA5B,CAAnB;AAAwD,OAAjG,CAAP;AAA4G,KAA1I;AAA6I;;AAChK,WAAS0B,MAAT,CAAgBzB,OAAhB,EAAyBE,MAAzB,EAAiCwB,CAAjC,EAAoCF,CAApC,EAAuC;AAAEvB,IAAAA,OAAO,CAACD,OAAR,CAAgBwB,CAAhB,EAAmBd,IAAnB,CAAwB,UAASc,CAAT,EAAY;AAAExB,MAAAA,OAAO,CAAC;AAAED,QAAAA,KAAK,EAAEyB,CAAT;AAAYf,QAAAA,IAAI,EAAEiB;AAAlB,OAAD,CAAP;AAAiC,KAAvE,EAAyExB,MAAzE;AAAmF;AAC/H,CAND;;ADOA;AACM,MAAOyB,WAAP,SAA2BC,0BAA3B,CAAmD;AAAzDC,EAAAA,WAAA,GAAA;ACKQ,UAAM,GAAGC,SAAT,EDLR,CACE;;AACS,SAAAC,IAAA,GAAO,eAAP;AACA,SAAAC,WAAA,GAAc,mCAAd;AAmGV,GAtGwD,CAKvD;;;AACUC,EAAAA,MAAM,CAAOC,OAAP,EAA6B;AAC3C,WAAO,MAAMD,MAAN,CAAaE,CAAC,IAAID,OAAO,CAACC,CAAD,CAAP,CACtBC,UADsB,CACX,QADW,EACD;AAAEC,MAAAA,IAAI,EAAE,QAAR;AAAkBC,MAAAA,YAAY,EAAE;AAAhC,KADC,EAEtBC,MAFsB,CAEf,WAFe,EAEF;AACnBC,MAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,MAAR,EAAgB,MAAhB,CADW;AAEnBC,MAAAA,OAAO,EAAE,KAFU;AAGnBC,MAAAA,IAAI,EAAE,iCACJ,6CADI,GAEJ,0BAFI,GAGJ;AANiB,KAFE,EAUtBH,MAVsB,CAUf,SAVe,EAUJ;AACjBF,MAAAA,IAAI,EAAE,SADW;AAEjBM,MAAAA,KAAK,EAAE,UAFU;AAGjBD,MAAAA,IAAI,EAAE;AAHW,KAVI,EAetBH,MAfsB,CAef,UAfe,EAeH;AAClBK,MAAAA,KAAK,EAAE,GADW;AAElBP,MAAAA,IAAI,EAAE,QAFY;AAGlBQ,MAAAA,MAAM,EAAGC,GAAD,IAAiBA,GAAG,KAAK,EAAR,GAAa,QAAb,GAAwBA,GAH/B;AAIlBH,MAAAA,KAAK,EAAE,WAJW;AAKlBD,MAAAA,IAAI,EAAE,wHACJ;AANgB,KAfG,EAuBtBH,MAvBsB,CAuBf,mBAvBe,EAuBM;AAC3BF,MAAAA,IAAI,EAAE,QADqB;AAE3BM,MAAAA,KAAK,EAAE,WAFoB;AAG3BD,MAAAA,IAAI,EAAE;AAHqB,KAvBN,EA4BtBH,MA5BsB,CA4Bf,uBA5Be,EA4BU;AAC/BF,MAAAA,IAAI,EAAE,QADyB;AAE/BI,MAAAA,OAAO,EAAE,QAFsB;AAG/BE,MAAAA,KAAK,EAAE,WAHwB;AAI/BD,MAAAA,IAAI,EAAE;AAJyB,KA5BV,CAAlB,CAAP;AAmCD;;AAEeK,EAAAA,GAAG,CAACC,IAAD,EAA0B;ACIvC,UAAMC,MAAM,GAAGC,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoB;AAC/BJ,MAAAA,GAAG,EAAE;AAAEK,QAAAA,GAAG,EAAE,MAAM,MAAML;AAAnB;AAD0B,KAApB,CAAf;;AAGA,QAAIM,GAAJ,EAASC,EAAT;;AACA,QAAIC,EAAJ;;AACA,WAAO9D,SAAS,CAAC,IAAD,EAAO,KAAK,CAAZ,EAAe,KAAK,CAApB,EAAuB,aAAa;ADRxD,YAAMwD,MAAA,CAAMF,GAAN,CAAS5B,IAAT,CAAS,IAAT,EAAU6B,IAAV,CAAN,CCQwD,CDNxD;;AACA,YAAMQ,QAAQ,GAAG,IAAIC,oBAAJ,EAAjB;AACAD,MAAAA,QAAQ,CAACE,GAAT,CAAaC,mBAAOC,OAAP,CAAe,CAACZ,IAAI,CAACa,MAAN,CAAf,CAAb;;AAEA,UAAIb,IAAI,CAACc,OAAL,KAAiBC,SAArB,EAAgC;AAC9BP,QAAAA,QAAQ,CAACE,GAAT,CAAaC,mBAAOK,gBAAP,CAAwBhB,IAAI,CAACc,OAA7B,CAAb;AACD;;AAED,UAAId,IAAI,CAACiB,QAAL,KAAkBF,SAAtB,EAAiC;AAC/BP,QAAAA,QAAQ,CAACE,GAAT,CAAa,IAAIQ,0BAAJ,CACXlB,IAAI,CAACiB,QADM,EAEXjB,IAAI,CAAC,uBAAD,CAFO,EAGXA,IAAI,CAAC,mBAAD,CAHO,CAAb;AAKD,OCRuD,CDUxD;;;AACA,YAAMmB,UAAU,GAAgB,EAAhC;;ACEQ,UAAI;ADAZ,aAAwB,IAAAC,EAAA,GAAAxD,aAAA,CAAA4C,QAAQ,CAACa,MAAT,CAAgB,KAAKC,OAAL,CAAaH,UAAb,EAAhB,CAAA,CAAA,EAA0CI,EAAlE,EAAkEA,EAAA,GAAA,MAAAH,EAAA,CAAA/D,IAAA,EAAA,EAAA,CAAAkE,EAAA,CAAA9D,IAAlE,GAAkE;AAAvD,gBAAM+D,GAAG,GAAAD,EAAA,CAAAxE,KAAT;AACToE,UAAAA,UAAU,CAACM,IAAX,CAAgBD,GAAhB;AACD;ACGQ,OALD,CAMA,OAAOE,KAAP,EAAc;AAAErB,QAAAA,GAAG,GAAG;AAAEsB,UAAAA,KAAK,EAAED;AAAT,SAAN;AAAyB,OANzC,SAOQ;AACJ,YAAI;AACA,cAAIH,EAAE,IAAI,CAACA,EAAE,CAAC9D,IAAV,KAAmB6C,EAAE,GAAGc,EAAE,CAACQ,MAA3B,CAAJ,EAAwC,MAAMtB,EAAE,CAACnC,IAAH,CAAQiD,EAAR,CAAN;AAC3C,SAFD,SAGQ;AAAE,cAAIf,GAAJ,EAAS,MAAMA,GAAG,CAACsB,KAAV;AAAkB;AACxC;;ADRT,UAAIR,UAAU,CAACU,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,aAAKC,OAAL,CAAaC,IAAb,CAAkB,sBAAlB;AACA,eAAO,CAAP;AACD;;AAED,WAAKD,OAAL,CAAaE,IAAb;AACA,WAAKC,MAAL,CAAYC,OAAZ,CAAoB,YAAYlC,IAAI,CAACa,MAAM,OAAOM,UAAU,CAACgB,GAAX,CAAeX,GAAG,IAAIA,GAAG,CAACzC,IAA1B,EAAgCqD,IAAhC,CAAqC,IAArC,CAA0C,EAA5F,ECvBwD,CDyBxD;;AACA,YAAMC,GAAG,GAAG,IAAIC,iBAAJ,EAAZ;AACA,YAAMC,KAAK,GAAW,EAAtB;;AAEA,WAAK,MAAMf,GAAX,IAAkBL,UAAlB,EAA8B;AAC5B,cAAMqB,IAAI,GAAG,MAAMhB,GAAG,CAACzB,GAAJ,CAAQC,IAAI,CAACa,MAAb,EAAqB,CAAAN,EAAA,GAAAP,IAAI,CAAC,IAAD,CAAJ,MAAU,IAAV,IAAUO,EAAA,KAAA,KAAA,CAAV,GAAU,KAAA,CAAV,GAAUA,EAAA,CAAE4B,GAAF,CAAMM,GAAG,IAAIA,GAAG,CAACC,QAAJ,EAAb,CAA/B,EAA6D;AAC9EC,UAAAA,SAAS,EAAE3C,IAAI,CAAC,WAAD;AAD+D,SAA7D,CAAnB;AAIAuC,QAAAA,KAAK,CAACd,IAAN,CAAWe,IAAX;AACAH,QAAAA,GAAG,CAAC3B,GAAJ,CAAQ8B,IAAR;AACD;;AAED,YAAMI,OAAO,GAAG,IAAIC,sBAAJ,EAAhB;AACAD,MAAAA,OAAO,CAACE,EAAR,CAAW,eAAX,EAA6BC,KAAD,IAAW,cAAcA,KAAK,eAA1D;AACAH,MAAAA,OAAO,CAACE,EAAR,CAAW,aAAX,EAA2BE,GAAD,IAAQ;AAAA,YAAA1C,EAAA,EAAAC,EAAA;;AAAC,eAAAgC,KAAK,CAACU,QAAN,CAAeD,GAAf,IAAsB,WAAWhD,IAAI,CAACa,MAAM,OAAO,CAAAP,EAAA,GAAA0C,GAAG,CAACE,OAAJ,CAAYC,SAAZ,MAAqB,IAArB,IAAqB7C,EAAA,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAqBA,EAAA,CAAEvB,IAAI,MAA9E,GAAuF,YAAY,CAAAwB,EAAA,GAAAyC,GAAG,CAACE,OAAJ,CAAYC,SAAZ,MAAqB,IAArB,IAAqB5C,EAAA,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAqBA,EAAA,CAAExB,IAAI,MAA9H;AAAoI,OAAvK;AACA6D,MAAAA,OAAO,CAACE,EAAR,CAAW,MAAX,EAAoBE,GAAD,IAAQ;AAAA,YAAA1C,EAAA,EAAAC,EAAA;;AAAC,eAAAgC,KAAK,CAACU,QAAN,CAAeD,GAAf,IAAsB,GAAG,CAAA1C,EAAA,GAAA0C,GAAG,CAACE,OAAJ,CAAYC,SAAZ,MAAqB,IAArB,IAAqB7C,EAAA,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAqBA,EAAA,CAAEvB,IAAI,IAAIiB,IAAI,CAACa,MAAM,SAAnE,GAA+E,mBAAmB,CAAAN,EAAA,GAAAyC,GAAG,CAACE,OAAJ,CAAYC,SAAZ,MAAqB,IAArB,IAAqB5C,EAAA,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAqBA,EAAA,CAAExB,IAAI,EAA7H;AAA+H,OAA3J;AACA6D,MAAAA,OAAO,CAACE,EAAR,CAAW,SAAX,EAAuBE,GAAD,IAAQ;AAAA,YAAA1C,EAAA,EAAAC,EAAA;;AAAC,eAAAgC,KAAK,CAACU,QAAN,CAAeD,GAAf,IAAsB,GAAG,CAAA1C,EAAA,GAAA0C,GAAG,CAACE,OAAJ,CAAYC,SAAZ,MAAqB,IAArB,IAAqB7C,EAAA,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAqBA,EAAA,CAAEvB,IAAI,IAAIiB,IAAI,CAACa,MAAM,OAAnE,GAA6E,GAAG,CAAAN,EAAA,GAAAyC,GAAG,CAACE,OAAJ,CAAYC,SAAZ,MAAqB,IAArB,IAAqB5C,EAAA,KAAA,KAAA,CAArB,GAAqB,KAAA,CAArB,GAAqBA,EAAA,CAAExB,IAAI,QAA3G;AAAmH,OAAlJ;AACA6D,MAAAA,OAAO,CAACQ,OAAR,CAAgBf,GAAhB;AAEAA,MAAAA,GAAG,CAACgB,KAAJ;AACA,YAAM,CAAC7F,MAAD,IAAW,MAAM6E,GAAG,CAACiB,OAAJ,CAAY,UAAZ,CAAvB;AACA,aAAO9F,MAAM,CAAC+F,MAAP,KAAkB,CAAlB,GAAsB,CAAtB,GAA0B,CAAjC;ACIK,KAnDe,CAAhB;ADgDL;;AArGsD","file":"each.command.js","sourcesContent":["import { AffectedFilter, Arguments, Builder, Filter, Pipeline, ProjectArgs, ProjectCommand } from '@jujulego/jill-common';\nimport { Task, TaskSet, Workspace, WorkspaceDepsMode } from '@jujulego/jill-core';\n\nimport { TaskLogger } from '../task-logger';\n\n// Types\nexport interface EachArgs extends ProjectArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n\n private: boolean | undefined;\n affected: string | undefined;\n 'affected-rev-sort': string | undefined;\n 'affected-rev-fallback': string;\n}\n\n// Command\nexport class EachCommand extends ProjectCommand<EachArgs> {\n // Attributes\n readonly name = 'each <script>';\n readonly description = 'Run script on selected workspaces';\n\n // Methods\n protected define<T, U>(builder: Builder<T, U>): Builder<T, U & EachArgs> {\n return super.define(y => builder(y)\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n );\n }\n\n protected async run(args: Arguments<EachArgs>): Promise<number> {\n await super.run(args);\n\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args['affected-rev-fallback'],\n args['affected-rev-sort']\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n workspaces.push(wks);\n }\n\n if (workspaces.length === 0) {\n this.spinner.fail('No workspace found !');\n return 1;\n }\n\n this.spinner.stop();\n this.logger.verbose(`Will run ${args.script} in ${workspaces.map(wks => wks.name).join(', ')}`);\n\n // Run tasks\n const set = new TaskSet();\n const tasks: Task[] = [];\n\n for (const wks of workspaces) {\n const task = await wks.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args['deps-mode']\n });\n\n tasks.push(task);\n set.add(task);\n }\n\n const tlogger = new TaskLogger();\n tlogger.on('spin-multiple', (count) => `Working in ${count} packages ...`);\n tlogger.on('spin-simple', (tsk) => tasks.includes(tsk) ? `Running ${args.script} in ${tsk.context.workspace?.name} ...` : `Building ${tsk.context.workspace?.name} ...`);\n tlogger.on('fail', (tsk) => tasks.includes(tsk) ? `${tsk.context.workspace?.name} ${args.script} failed` : `Failed to build ${tsk.context.workspace?.name}`);\n tlogger.on('succeed', (tsk) => tasks.includes(tsk) ? `${tsk.context.workspace?.name} ${args.script} done` : `${tsk.context.workspace?.name} built`);\n tlogger.connect(set);\n\n set.start();\n const [result] = await set.waitFor('finished');\n return result.failed === 0 ? 0 : 1;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { AffectedFilter, Filter, Pipeline, ProjectCommand } from '@jujulego/jill-common';\nimport { TaskSet } from '@jujulego/jill-core';\nimport { TaskLogger } from '../task-logger';\n// Command\nexport class EachCommand extends ProjectCommand {\n constructor() {\n super(...arguments);\n // Attributes\n this.name = 'each <script>';\n this.description = 'Run script on selected workspaces';\n }\n // Methods\n define(builder) {\n return super.define(y => builder(y)\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n }));\n }\n run(args) {\n const _super = Object.create(null, {\n run: { get: () => super.run }\n });\n var e_1, _a;\n var _b;\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.run.call(this, args);\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(args.affected, args['affected-rev-fallback'], args['affected-rev-sort']));\n }\n // Filter\n const workspaces = [];\n try {\n for (var _c = __asyncValues(pipeline.filter(this.project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {\n const wks = _d.value;\n workspaces.push(wks);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (workspaces.length === 0) {\n this.spinner.fail('No workspace found !');\n return 1;\n }\n this.spinner.stop();\n this.logger.verbose(`Will run ${args.script} in ${workspaces.map(wks => wks.name).join(', ')}`);\n // Run tasks\n const set = new TaskSet();\n const tasks = [];\n for (const wks of workspaces) {\n const task = yield wks.run(args.script, (_b = args['--']) === null || _b === void 0 ? void 0 : _b.map(arg => arg.toString()), {\n buildDeps: args['deps-mode']\n });\n tasks.push(task);\n set.add(task);\n }\n const tlogger = new TaskLogger();\n tlogger.on('spin-multiple', (count) => `Working in ${count} packages ...`);\n tlogger.on('spin-simple', (tsk) => { var _a, _b; return tasks.includes(tsk) ? `Running ${args.script} in ${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ...` : `Building ${(_b = tsk.context.workspace) === null || _b === void 0 ? void 0 : _b.name} ...`; });\n tlogger.on('fail', (tsk) => { var _a, _b; return tasks.includes(tsk) ? `${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ${args.script} failed` : `Failed to build ${(_b = tsk.context.workspace) === null || _b === void 0 ? void 0 : _b.name}`; });\n tlogger.on('succeed', (tsk) => { var _a, _b; return tasks.includes(tsk) ? `${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ${args.script} done` : `${(_b = tsk.context.workspace) === null || _b === void 0 ? void 0 : _b.name} built`; });\n tlogger.connect(set);\n set.start();\n const [result] = yield set.waitFor('finished');\n return result.failed === 0 ? 0 : 1;\n });\n }\n}"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Arguments, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';
|
|
2
|
+
export declare class InfoCommand extends WorkspaceCommand {
|
|
3
|
+
readonly name = "info";
|
|
4
|
+
readonly description = "Print workspace data";
|
|
5
|
+
protected run(args: Arguments<WorkspaceArgs>): Promise<number | void>;
|
|
6
|
+
private printDepsTree;
|
|
7
|
+
private printTree;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/info.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMnF,qBAAa,WAAY,SAAQ,gBAAgB;IAE/C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,0BAA0B;cAG9B,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAY7D,aAAa;YAWb,SAAS;CAiCxB","file":"info.command.d.ts","sourcesContent":["import { Arguments, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport chalk from 'chalk';\nimport path from 'path';\n\n// Command\nexport class InfoCommand extends WorkspaceCommand {\n // Attributes\n readonly name = 'info';\n readonly description = 'Print workspace data';\n\n // Methods\n protected async run(args: Arguments<WorkspaceArgs>): Promise<number | void> {\n await super.run(args);\n this.spinner.stop();\n\n // Print data\n this.log(chalk`Workspace {bold ${this.workspace.name}}:`);\n this.log(chalk`{bold Version:} ${this.workspace.manifest.version || chalk.grey('unset')}`);\n this.log(chalk`{bold Directory:} ${path.relative(process.cwd(), this.workspace.cwd) || '.'}`);\n this.log('');\n await this.printDepsTree();\n }\n\n private async printDepsTree(): Promise<void> {\n this.log(chalk`{bold Dependencies:}`);\n const printed = new Set([this.workspace.name]);\n\n await this.printTree(this.workspace, '', false, printed);\n\n if (printed.size === 1) {\n this.log(chalk.grey(` No dependencies for ${this.workspace.name}`));\n }\n }\n\n private async printTree(wks: Workspace, level: string, dev: boolean, printed: Set<string>) {\n const workspaces: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n workspaces.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n workspaces.push([dep, true]);\n }\n\n for (let i = 0; i < workspaces.length; ++i) {\n const [dep, isDev] = workspaces[i];\n const isPrinted = printed.has(dep.cwd);\n const isLast = i === workspaces.length - 1;\n\n // Format\n let name = dep.name;\n if (dep.version) name = chalk`${name}{grey @${dep.version}}`;\n if (isDev) name = chalk.blue(`${name} (dev)`);\n if (isPrinted) name = chalk.italic(name);\n\n const branchFmt = dev ? chalk.blue : (s: string) => s;\n\n this.log(`${level}${branchFmt(`${isLast ? '└' : '├' }─ `)}${name}`);\n\n // Print deps of dep\n if (!isPrinted) {\n printed.add(dep.cwd);\n await this.printTree(dep, level + (isLast ? ' ' : branchFmt('│ ')), isDev, printed);\n }\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.InfoCommand = void 0;
|
|
7
|
+
|
|
8
|
+
var _jillCommon = require("@jujulego/jill-common");
|
|
9
|
+
|
|
10
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
11
|
+
|
|
12
|
+
var _path = _interopRequireDefault(require("path"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) {
|
|
18
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
19
|
+
resolve(value);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) {
|
|
25
|
+
try {
|
|
26
|
+
step(generator.next(value));
|
|
27
|
+
} catch (e) {
|
|
28
|
+
reject(e);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function rejected(value) {
|
|
33
|
+
try {
|
|
34
|
+
step(generator["throw"](value));
|
|
35
|
+
} catch (e) {
|
|
36
|
+
reject(e);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function step(result) {
|
|
41
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {
|
|
49
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
50
|
+
var m = o[Symbol.asyncIterator],
|
|
51
|
+
i;
|
|
52
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
|
|
53
|
+
return this;
|
|
54
|
+
}, i);
|
|
55
|
+
|
|
56
|
+
function verb(n) {
|
|
57
|
+
i[n] = o[n] && function (v) {
|
|
58
|
+
return new Promise(function (resolve, reject) {
|
|
59
|
+
v = o[n](v), settle(resolve, reject, v.done, v.value);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function settle(resolve, reject, d, v) {
|
|
65
|
+
Promise.resolve(v).then(function (v) {
|
|
66
|
+
resolve({
|
|
67
|
+
value: v,
|
|
68
|
+
done: d
|
|
69
|
+
});
|
|
70
|
+
}, reject);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// Command
|
|
75
|
+
class InfoCommand extends _jillCommon.WorkspaceCommand {
|
|
76
|
+
constructor() {
|
|
77
|
+
super(...arguments); // Attributes
|
|
78
|
+
|
|
79
|
+
this.name = 'info';
|
|
80
|
+
this.description = 'Print workspace data';
|
|
81
|
+
} // Methods
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
run(args) {
|
|
85
|
+
const _super = Object.create(null, {
|
|
86
|
+
run: {
|
|
87
|
+
get: () => super.run
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
yield _super.run.call(this, args);
|
|
93
|
+
this.spinner.stop(); // Print data
|
|
94
|
+
|
|
95
|
+
this.log((0, _chalk.default)`Workspace {bold ${this.workspace.name}}:`);
|
|
96
|
+
this.log((0, _chalk.default)`{bold Version:} ${this.workspace.manifest.version || _chalk.default.grey('unset')}`);
|
|
97
|
+
this.log((0, _chalk.default)`{bold Directory:} ${_path.default.relative(process.cwd(), this.workspace.cwd) || '.'}`);
|
|
98
|
+
this.log('');
|
|
99
|
+
yield this.printDepsTree();
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
printDepsTree() {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
this.log((0, _chalk.default)`{bold Dependencies:}`);
|
|
106
|
+
const printed = new Set([this.workspace.name]);
|
|
107
|
+
yield this.printTree(this.workspace, '', false, printed);
|
|
108
|
+
|
|
109
|
+
if (printed.size === 1) {
|
|
110
|
+
this.log(_chalk.default.grey(` No dependencies for ${this.workspace.name}`));
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
printTree(wks, level, dev, printed) {
|
|
116
|
+
var e_1, _a, e_2, _b;
|
|
117
|
+
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
const workspaces = [];
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {
|
|
123
|
+
const dep = _d.value;
|
|
124
|
+
workspaces.push([dep, dev]);
|
|
125
|
+
}
|
|
126
|
+
} catch (e_1_1) {
|
|
127
|
+
e_1 = {
|
|
128
|
+
error: e_1_1
|
|
129
|
+
};
|
|
130
|
+
} finally {
|
|
131
|
+
try {
|
|
132
|
+
if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
|
|
133
|
+
} finally {
|
|
134
|
+
if (e_1) throw e_1.error;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {
|
|
140
|
+
const dep = _f.value;
|
|
141
|
+
workspaces.push([dep, true]);
|
|
142
|
+
}
|
|
143
|
+
} catch (e_2_1) {
|
|
144
|
+
e_2 = {
|
|
145
|
+
error: e_2_1
|
|
146
|
+
};
|
|
147
|
+
} finally {
|
|
148
|
+
try {
|
|
149
|
+
if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);
|
|
150
|
+
} finally {
|
|
151
|
+
if (e_2) throw e_2.error;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
for (let i = 0; i < workspaces.length; ++i) {
|
|
156
|
+
const [dep, isDev] = workspaces[i];
|
|
157
|
+
const isPrinted = printed.has(dep.cwd);
|
|
158
|
+
const isLast = i === workspaces.length - 1; // Format
|
|
159
|
+
|
|
160
|
+
let name = dep.name;
|
|
161
|
+
if (dep.version) name = (0, _chalk.default)`${name}{grey @${dep.version}}`;
|
|
162
|
+
if (isDev) name = _chalk.default.blue(`${name} (dev)`);
|
|
163
|
+
if (isPrinted) name = _chalk.default.italic(name);
|
|
164
|
+
const branchFmt = dev ? _chalk.default.blue : s => s;
|
|
165
|
+
this.log(`${level}${branchFmt(`${isLast ? '└' : '├'}─ `)}${name}`); // Print deps of dep
|
|
166
|
+
|
|
167
|
+
if (!isPrinted) {
|
|
168
|
+
printed.add(dep.cwd);
|
|
169
|
+
yield this.printTree(dep, level + (isLast ? ' ' : branchFmt('│ ')), isDev, printed);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
exports.InfoCommand = InfoCommand;
|
|
178
|
+
//# sourceMappingURL=info.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/info.command.ts","commands/info.command.js"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","InfoCommand","WorkspaceCommand","constructor","arguments","name","description","run","args","_super","Object","create","get","spinner","stop","log","workspace","manifest","version","chalk","grey","path","relative","process","cwd","printDepsTree","printed","Set","printTree","size","wks","level","dev","e_1","_a","e_2","_b","workspaces","_c","dependencies","_d","dep","push","e_1_1","error","return","_e","devDependencies","_f","e_2_1","length","isDev","isPrinted","has","isLast","blue","italic","branchFmt","s","add"],"mappings":"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","file":"info.command.js","sourcesContent":["import { Arguments, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport chalk from 'chalk';\nimport path from 'path';\n\n// Command\nexport class InfoCommand extends WorkspaceCommand {\n // Attributes\n readonly name = 'info';\n readonly description = 'Print workspace data';\n\n // Methods\n protected async run(args: Arguments<WorkspaceArgs>): Promise<number | void> {\n await super.run(args);\n this.spinner.stop();\n\n // Print data\n this.log(chalk`Workspace {bold ${this.workspace.name}}:`);\n this.log(chalk`{bold Version:} ${this.workspace.manifest.version || chalk.grey('unset')}`);\n this.log(chalk`{bold Directory:} ${path.relative(process.cwd(), this.workspace.cwd) || '.'}`);\n this.log('');\n await this.printDepsTree();\n }\n\n private async printDepsTree(): Promise<void> {\n this.log(chalk`{bold Dependencies:}`);\n const printed = new Set([this.workspace.name]);\n\n await this.printTree(this.workspace, '', false, printed);\n\n if (printed.size === 1) {\n this.log(chalk.grey(` No dependencies for ${this.workspace.name}`));\n }\n }\n\n private async printTree(wks: Workspace, level: string, dev: boolean, printed: Set<string>) {\n const workspaces: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n workspaces.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n workspaces.push([dep, true]);\n }\n\n for (let i = 0; i < workspaces.length; ++i) {\n const [dep, isDev] = workspaces[i];\n const isPrinted = printed.has(dep.cwd);\n const isLast = i === workspaces.length - 1;\n\n // Format\n let name = dep.name;\n if (dep.version) name = chalk`${name}{grey @${dep.version}}`;\n if (isDev) name = chalk.blue(`${name} (dev)`);\n if (isPrinted) name = chalk.italic(name);\n\n const branchFmt = dev ? chalk.blue : (s: string) => s;\n\n this.log(`${level}${branchFmt(`${isLast ? '└' : '├' }─ `)}${name}`);\n\n // Print deps of dep\n if (!isPrinted) {\n printed.add(dep.cwd);\n await this.printTree(dep, level + (isLast ? ' ' : branchFmt('│ ')), isDev, printed);\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { WorkspaceCommand } from '@jujulego/jill-common';\nimport chalk from 'chalk';\nimport path from 'path';\n// Command\nexport class InfoCommand extends WorkspaceCommand {\n constructor() {\n super(...arguments);\n // Attributes\n this.name = 'info';\n this.description = 'Print workspace data';\n }\n // Methods\n run(args) {\n const _super = Object.create(null, {\n run: { get: () => super.run }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.run.call(this, args);\n this.spinner.stop();\n // Print data\n this.log(chalk `Workspace {bold ${this.workspace.name}}:`);\n this.log(chalk `{bold Version:} ${this.workspace.manifest.version || chalk.grey('unset')}`);\n this.log(chalk `{bold Directory:} ${path.relative(process.cwd(), this.workspace.cwd) || '.'}`);\n this.log('');\n yield this.printDepsTree();\n });\n }\n printDepsTree() {\n return __awaiter(this, void 0, void 0, function* () {\n this.log(chalk `{bold Dependencies:}`);\n const printed = new Set([this.workspace.name]);\n yield this.printTree(this.workspace, '', false, printed);\n if (printed.size === 1) {\n this.log(chalk.grey(` No dependencies for ${this.workspace.name}`));\n }\n });\n }\n printTree(wks, level, dev, printed) {\n var e_1, _a, e_2, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const workspaces = [];\n try {\n for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {\n const dep = _d.value;\n workspaces.push([dep, dev]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {\n const dep = _f.value;\n workspaces.push([dep, true]);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n for (let i = 0; i < workspaces.length; ++i) {\n const [dep, isDev] = workspaces[i];\n const isPrinted = printed.has(dep.cwd);\n const isLast = i === workspaces.length - 1;\n // Format\n let name = dep.name;\n if (dep.version)\n name = chalk `${name}{grey @${dep.version}}`;\n if (isDev)\n name = chalk.blue(`${name} (dev)`);\n if (isPrinted)\n name = chalk.italic(name);\n const branchFmt = dev ? chalk.blue : (s) => s;\n this.log(`${level}${branchFmt(`${isLast ? '└' : '├'}─ `)}${name}`);\n // Print deps of dep\n if (!isPrinted) {\n printed.add(dep.cwd);\n yield this.printTree(dep, level + (isLast ? ' ' : branchFmt('│ ')), isDev, printed);\n }\n }\n });\n }\n}"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Arguments, Builder, ProjectArgs, ProjectCommand } from '@jujulego/jill-common';
|
|
2
|
+
export declare type Attribute = 'name' | 'version' | 'root' | 'slug';
|
|
3
|
+
export declare type Data = Partial<Record<Attribute, string>>;
|
|
4
|
+
export interface ListArgs extends ProjectArgs {
|
|
5
|
+
private: boolean | undefined;
|
|
6
|
+
'with-script': string[] | undefined;
|
|
7
|
+
affected: string | undefined;
|
|
8
|
+
'affected-rev-sort': string | undefined;
|
|
9
|
+
'affected-rev-fallback': string;
|
|
10
|
+
attrs: Attribute[];
|
|
11
|
+
headers: boolean | undefined;
|
|
12
|
+
long: boolean | undefined;
|
|
13
|
+
json: boolean | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare class ListCommand extends ProjectCommand<ListArgs> {
|
|
16
|
+
readonly name: string[];
|
|
17
|
+
readonly description = "List workspaces";
|
|
18
|
+
private buildExtractor;
|
|
19
|
+
protected define<T, U>(builder: Builder<T, U>): Builder<T, U & ListArgs>;
|
|
20
|
+
protected run(args: Arguments<ListArgs>): Promise<number | void>;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/list.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,OAAO,EAA6B,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOnI,oBAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,oBAAY,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAItD,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC3C,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAEpC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,uBAAuB,EAAE,MAAM,CAAC;IAEhC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAeD,qBAAa,WAAY,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAEvD,QAAQ,CAAC,IAAI,WAAkB;IAC/B,QAAQ,CAAC,WAAW,qBAAqB;IAGzC,OAAO,CAAC,cAAc;IAYtB,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;cA0DxD,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAyEvE","file":"list.command.d.ts","sourcesContent":["import { AffectedFilter, Arguments, Builder, CliList, Filter, Pipeline, ProjectArgs, ProjectCommand } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport chalk from 'chalk';\nimport slugify from 'slugify';\nimport path from 'path';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\nexport interface ListArgs extends ProjectArgs {\n private: boolean | undefined;\n 'with-script': string[] | undefined;\n\n affected: string | undefined;\n 'affected-rev-sort': string | undefined;\n 'affected-rev-fallback': string;\n\n attrs: Attribute[];\n headers: boolean | undefined;\n long: boolean | undefined;\n json: boolean | undefined;\n}\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS: Record<Attribute, Extractor<string | undefined>> = {\n name: wks => wks.name,\n version: (wks, json) => wks.manifest.version || (json ? undefined : chalk.grey('unset')),\n root: wks => wks.cwd,\n slug: wks => slugify(wks.name)\n};\n\n// Command\nexport class ListCommand extends ProjectCommand<ListArgs> {\n // Attributes\n readonly name = ['list', 'ls'];\n readonly description = 'List workspaces';\n\n // Methods\n private buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json: boolean) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n }\n\n protected define<T, U>(builder: Builder<T, U>): Builder<T, U & ListArgs> {\n return super.define(y => builder(y)\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [] as Attribute[],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n })\n );\n }\n\n protected async run(args: Arguments<ListArgs>): Promise<number | void> {\n await super.run(args);\n\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args['with-script'] !== undefined) {\n pipeline.add(Filter.scripts(args['with-script']));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args['affected-rev-fallback'],\n args['affected-rev-sort']\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n workspaces.push(wks);\n }\n\n this.spinner.stop();\n\n // Build data\n let attrs = args.attrs;\n\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n const data = workspaces.map(wks => this.buildExtractor(attrs)(wks, args.json || false));\n\n // Print data\n if (args.json) {\n if (process.stdout.isTTY) { // Pretty print for ttys\n this.log(JSON.stringify(data, null, 2));\n } else {\n this.log(JSON.stringify(data));\n }\n } else {\n const list = new CliList();\n\n if (args.headers ?? (attrs.length > 1)) {\n list.setHeaders(attrs);\n }\n\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) || '.';\n }\n\n list.add(attrs.map(attr => d[attr] || ''));\n }\n\n for (const d of list.lines()) {\n this.log(d);\n }\n }\n }\n}\n"]}
|