@jujulego/jill 2.4.0-alpha.5 → 2.4.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -11
- package/dist/commands/each.d.ts +9 -6
- package/dist/commands/group.d.ts +2 -2
- package/dist/commands/run.d.ts +6 -4
- package/dist/{core.plugin-ED-2XO_T.js → core.plugin-fx8ZOGe-.js} +106 -135
- package/dist/core.plugin-fx8ZOGe-.js.map +1 -0
- package/dist/filters/scripts.filter.d.ts +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/{ink-command-HSaTNbaX.js → ink-command-OuyNSTxT.js} +14 -57
- package/dist/{ink-command-HSaTNbaX.js.map → ink-command-OuyNSTxT.js.map} +1 -1
- package/dist/{jill.application-nR6EmV7y.js → jill.application-JCJSgP36.js} +21 -34
- package/dist/{jill.application-nR6EmV7y.js.map → jill.application-JCJSgP36.js.map} +1 -1
- package/dist/main.js +6 -4
- package/dist/main.js.map +1 -1
- package/dist/tasks/errors.d.ts +4 -0
- package/dist/tasks/{task-expr.service.d.ts → task-expression.service.d.ts} +2 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/{workspace-tree-DEg4wm69.js → workspace-tree-YMFiEGQk.js} +64 -112
- package/dist/workspace-tree-YMFiEGQk.js.map +1 -0
- package/package.json +10 -8
- package/dist/core.plugin-ED-2XO_T.js.map +0 -1
- package/dist/workspace-tree-DEg4wm69.js.map +0 -1
package/README.md
CHANGED
|
@@ -11,9 +11,9 @@ Zero-config monorepo cli
|
|
|
11
11
|
Jill uses the `workspaces` attribute of your root package.json manifest to build your workspaces dependency tree.
|
|
12
12
|
That done it can offer you various utilities:
|
|
13
13
|
- `jill list` prints a list of all your workspaces, with many useful filters
|
|
14
|
-
- `jill run`
|
|
15
|
-
- `jill
|
|
16
|
-
|
|
14
|
+
- `jill run` Run a task expression in a workspace, after having built all its dependencies.
|
|
15
|
+
- `jill group` Deprecated in favor of run
|
|
16
|
+
- `jill each` Run a task expression in many workspace, after having built all theirs dependencies.
|
|
17
17
|
- `jill tree` prints current workspace's local dependency tree
|
|
18
18
|
|
|
19
19
|
It supports both `npm` and `yarn`.
|
|
@@ -24,10 +24,7 @@ Jill will run hook script like npm do, for both npm and yarn. As npm, when you t
|
|
|
24
24
|
|
|
25
25
|
This feature can be disabled using the `--no-hooks` option: `jill run --no-hooks test`.
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
- `jill group` same as `run` but allows to run multiple scripts in sequence or in parallel using the task syntax
|
|
29
|
-
|
|
30
|
-
#### Task syntax _(only supported by `jill group` command yet)_
|
|
27
|
+
#### Task expression syntax
|
|
31
28
|
Allows to instruct multiple tasks with the given orchestration. The orchestration is given by the following operators:
|
|
32
29
|
- `&&` in sequence
|
|
33
30
|
- `||` fallbacks
|
|
@@ -36,22 +33,22 @@ Allows to instruct multiple tasks with the given orchestration. The orchestratio
|
|
|
36
33
|
##### Examples:
|
|
37
34
|
- This will run scripts **taskA**, **taskB** and **taskC** in order, one after another.
|
|
38
35
|
```shell
|
|
39
|
-
jill
|
|
36
|
+
jill run 'taskA && taskB && taskC'
|
|
40
37
|
```
|
|
41
38
|
|
|
42
39
|
- This will run first **taskA**, if it fails it will run **taskB**, then **taskC** in order, until one succeed.
|
|
43
40
|
```shell
|
|
44
|
-
jill
|
|
41
|
+
jill run 'taskA || taskB || taskC'
|
|
45
42
|
```
|
|
46
43
|
|
|
47
44
|
- This will run scripts **taskA**, **taskB** and **taskC** in parallel.
|
|
48
45
|
```shell
|
|
49
|
-
jill
|
|
46
|
+
jill run 'taskA // taskB // taskC'
|
|
50
47
|
```
|
|
51
48
|
|
|
52
49
|
- And you can create more complex flows: this will run **taskA** and **taskB** in parallel, and then **taskC** when both tasks are ended
|
|
53
50
|
```shell
|
|
54
|
-
jill
|
|
51
|
+
jill run '(taskA // taskB) && taskC'
|
|
55
52
|
```
|
|
56
53
|
|
|
57
54
|
## Installation
|
package/dist/commands/each.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ import { type ArgumentsCamelCase, type Argv } from 'yargs';
|
|
|
3
3
|
import { TaskCommand } from '@/src/modules/task-command.tsx';
|
|
4
4
|
import { type Project } from '@/src/project/project.ts';
|
|
5
5
|
import { type WorkspaceDepsMode } from '@/src/project/workspace.ts';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { TaskExpressionService } from '@/src/tasks/task-expression.service.ts';
|
|
7
|
+
export interface EachCommandArgs {
|
|
8
|
+
expr: string;
|
|
8
9
|
'build-script': string;
|
|
9
10
|
'deps-mode': WorkspaceDepsMode;
|
|
10
11
|
'allow-no-workspaces'?: boolean;
|
|
@@ -13,10 +14,12 @@ export interface IEachCommandArgs {
|
|
|
13
14
|
'affected-rev-fallback': string;
|
|
14
15
|
'affected-rev-sort'?: string;
|
|
15
16
|
}
|
|
16
|
-
export declare class EachCommand extends TaskCommand<
|
|
17
|
+
export declare class EachCommand extends TaskCommand<EachCommandArgs> {
|
|
17
18
|
private readonly logger;
|
|
19
|
+
private readonly taskExpression;
|
|
18
20
|
readonly project: Project;
|
|
19
|
-
constructor(logger: Logger);
|
|
20
|
-
builder(parser: Argv): Argv<
|
|
21
|
-
prepare(
|
|
21
|
+
constructor(logger: Logger, taskExpression: TaskExpressionService);
|
|
22
|
+
builder(parser: Argv): Argv<EachCommandArgs>;
|
|
23
|
+
prepare(argv: ArgumentsCamelCase<EachCommandArgs>): AsyncGenerator<import("@jujulego/tasks").Task<import("@jujulego/tasks").TaskContext>, void, unknown>;
|
|
24
|
+
private _preparePipeline;
|
|
22
25
|
}
|
package/dist/commands/group.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ArgumentsCamelCase, type Argv } from 'yargs';
|
|
2
2
|
import { TaskCommand } from '@/src/modules/task-command.tsx';
|
|
3
3
|
import { type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { TaskExpressionService, type TaskTree } from '@/src/tasks/task-expression.service.ts';
|
|
5
5
|
export interface IGroupCommandArgs {
|
|
6
6
|
script: TaskTree;
|
|
7
7
|
'build-script': string;
|
|
@@ -10,7 +10,7 @@ export interface IGroupCommandArgs {
|
|
|
10
10
|
export declare class GroupCommand extends TaskCommand<IGroupCommandArgs> {
|
|
11
11
|
private readonly taskExpr;
|
|
12
12
|
readonly workspace: Workspace;
|
|
13
|
-
constructor(taskExpr:
|
|
13
|
+
constructor(taskExpr: TaskExpressionService);
|
|
14
14
|
builder(parser: Argv): Argv<IGroupCommandArgs>;
|
|
15
15
|
prepare(args: ArgumentsCamelCase<IGroupCommandArgs>): AsyncGenerator<import("@jujulego/tasks").Task<import("@jujulego/tasks").TaskContext>, void, unknown>;
|
|
16
16
|
}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -2,21 +2,23 @@ import { Logger } from '@jujulego/logger';
|
|
|
2
2
|
import { type ArgumentsCamelCase, type Argv } from 'yargs';
|
|
3
3
|
import { TaskCommand } from '@/src/modules/task-command.tsx';
|
|
4
4
|
import { type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace.ts';
|
|
5
|
+
import { TaskExpressionService } from '@/src/tasks/task-expression.service.ts';
|
|
5
6
|
export interface IRunCommandArgs {
|
|
6
|
-
|
|
7
|
+
expr: string;
|
|
7
8
|
'build-script': string;
|
|
8
9
|
'deps-mode': WorkspaceDepsMode;
|
|
9
10
|
}
|
|
10
11
|
export declare class RunCommand extends TaskCommand<IRunCommandArgs> {
|
|
11
12
|
private readonly logger;
|
|
13
|
+
private readonly taskExpression;
|
|
12
14
|
readonly workspace: Workspace;
|
|
13
|
-
constructor(logger: Logger);
|
|
15
|
+
constructor(logger: Logger, taskExpression: TaskExpressionService);
|
|
14
16
|
builder(parser: Argv): Argv<import("@/src/modules/task-command.tsx").ITaskCommandArgs & {
|
|
15
|
-
|
|
17
|
+
expr: string;
|
|
16
18
|
} & {
|
|
17
19
|
"build-script": string;
|
|
18
20
|
} & {
|
|
19
21
|
"deps-mode": "all";
|
|
20
22
|
}>;
|
|
21
|
-
prepare(args: ArgumentsCamelCase<IRunCommandArgs>): AsyncGenerator<import("
|
|
23
|
+
prepare(args: ArgumentsCamelCase<IRunCommandArgs>): AsyncGenerator<import("@jujulego/tasks").Task<import("@jujulego/tasks").TaskContext>, void, unknown>;
|
|
22
24
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { _ } from '@swc/helpers/_/_ts_decorate';
|
|
2
|
+
import { _ as _$1 } from '@swc/helpers/_/_ts_param';
|
|
1
3
|
import { Logger } from '@jujulego/logger';
|
|
2
4
|
import { inject } from 'inversify';
|
|
3
5
|
import symbols from 'log-symbols';
|
|
4
|
-
import { b as LazyCurrentProject, L as LoadProject, S as ScriptsFilter, a as PrivateFilter, A as AffectedFilter, P as Pipeline, d as LazyCurrentWorkspace, c as LoadWorkspace,
|
|
5
|
-
import { h as Command, E as ExitException, I as InkCommand, z as printJson, a as List } from './ink-command-
|
|
6
|
-
import { T as TaskCommand } from './jill.application-
|
|
6
|
+
import { b as LazyCurrentProject, L as LoadProject, T as TaskExpressionService, k as TaskExpressionError, l as TaskSyntaxError, S as ScriptsFilter, a as PrivateFilter, A as AffectedFilter, P as Pipeline, d as LazyCurrentWorkspace, c as LoadWorkspace, W as WorkspaceTree, f as Plugin } from './workspace-tree-YMFiEGQk.js';
|
|
7
|
+
import { h as Command, E as ExitException, I as InkCommand, z as printJson, a as List } from './ink-command-OuyNSTxT.js';
|
|
8
|
+
import { T as TaskCommand } from './jill.application-JCJSgP36.js';
|
|
7
9
|
import { jsx } from 'react/jsx-runtime';
|
|
8
10
|
import chalk from 'chalk';
|
|
9
11
|
import path from 'node:path';
|
|
@@ -35,29 +37,20 @@ import '@jujulego/aegis';
|
|
|
35
37
|
import '@jujulego/quick-tag';
|
|
36
38
|
import 'chalk-template';
|
|
37
39
|
|
|
38
|
-
function _ts_decorate$6(decorators, target, key, desc) {
|
|
39
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
40
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
41
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
42
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
43
|
-
}
|
|
44
|
-
function _ts_param$3(paramIndex, decorator) {
|
|
45
|
-
return function(target, key) {
|
|
46
|
-
decorator(target, key, paramIndex);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
40
|
let EachCommand = class EachCommand extends TaskCommand {
|
|
50
41
|
// Constructor
|
|
51
|
-
constructor(logger){
|
|
42
|
+
constructor(logger, taskExpression){
|
|
52
43
|
super();
|
|
53
44
|
this.logger = logger;
|
|
45
|
+
this.taskExpression = taskExpression;
|
|
54
46
|
}
|
|
55
47
|
// Methods
|
|
56
48
|
builder(parser) {
|
|
57
49
|
return this.addTaskOptions(parser)// Run options
|
|
58
|
-
.positional("
|
|
50
|
+
.positional("expr", {
|
|
59
51
|
type: "string",
|
|
60
|
-
demandOption: true
|
|
52
|
+
demandOption: true,
|
|
53
|
+
desc: "Script or task expression"
|
|
61
54
|
}).option("build-script", {
|
|
62
55
|
default: "build",
|
|
63
56
|
desc: "Script to use to build dependencies"
|
|
@@ -73,7 +66,7 @@ let EachCommand = class EachCommand extends TaskCommand {
|
|
|
73
66
|
}).option("allow-no-workspaces", {
|
|
74
67
|
type: "boolean",
|
|
75
68
|
default: false,
|
|
76
|
-
desc: "Allow no matching workspaces.
|
|
69
|
+
desc: "Allow no matching workspaces. Without it jill will exit with code 1 if no workspace matches"
|
|
77
70
|
})// Filters
|
|
78
71
|
.option("private", {
|
|
79
72
|
type: "boolean",
|
|
@@ -99,63 +92,74 @@ let EachCommand = class EachCommand extends TaskCommand {
|
|
|
99
92
|
"unknown-options-as-args": true
|
|
100
93
|
});
|
|
101
94
|
}
|
|
102
|
-
async *prepare(
|
|
103
|
-
// Setup pipeline
|
|
104
|
-
const pipeline = new Pipeline();
|
|
105
|
-
pipeline.add(new ScriptsFilter([
|
|
106
|
-
args.script
|
|
107
|
-
]));
|
|
108
|
-
if (args.private !== undefined) {
|
|
109
|
-
pipeline.add(new PrivateFilter(args.private));
|
|
110
|
-
}
|
|
111
|
-
if (args.affected !== undefined) {
|
|
112
|
-
pipeline.add(new AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));
|
|
113
|
-
}
|
|
114
|
-
// Extract arguments
|
|
115
|
-
const rest = args._.map((arg)=>arg.toString());
|
|
116
|
-
if (rest[0] === "each") {
|
|
117
|
-
rest.splice(0, 1);
|
|
118
|
-
}
|
|
119
|
-
// Create script tasks
|
|
95
|
+
async *prepare(argv) {
|
|
120
96
|
let empty = true;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
97
|
+
try {
|
|
98
|
+
// Extract expression
|
|
99
|
+
const expr = argv._.map((arg)=>arg.toString());
|
|
100
|
+
if (expr[0] === "each") {
|
|
101
|
+
expr.splice(0, 1);
|
|
102
|
+
}
|
|
103
|
+
expr.unshift(argv.expr);
|
|
104
|
+
const tree = this.taskExpression.parse(expr.join(" "));
|
|
105
|
+
const scripts = Array.from(this.taskExpression.extractScripts(tree));
|
|
106
|
+
// Create script tasks
|
|
107
|
+
const pipeline = this._preparePipeline(argv, scripts);
|
|
108
|
+
for await (const wks of pipeline.filter(this.project.workspaces())){
|
|
109
|
+
const task = await this.taskExpression.buildTask(tree.roots[0], wks, {
|
|
110
|
+
buildScript: argv.buildScript,
|
|
111
|
+
buildDeps: argv.depsMode
|
|
112
|
+
});
|
|
113
|
+
if (task) {
|
|
114
|
+
yield task;
|
|
115
|
+
empty = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} catch (err) {
|
|
119
|
+
if (err instanceof TaskExpressionError) {
|
|
120
|
+
this.logger.error(err.message);
|
|
121
|
+
throw new ExitException(1);
|
|
122
|
+
}
|
|
123
|
+
if (err instanceof TaskSyntaxError) {
|
|
124
|
+
this.logger.error(`Syntax error in task expression: ${err.message}`);
|
|
125
|
+
throw new ExitException(1);
|
|
129
126
|
}
|
|
127
|
+
throw err;
|
|
130
128
|
}
|
|
131
129
|
if (empty) {
|
|
132
130
|
this.logger.error(`${symbols.error} No matching workspace found !`);
|
|
133
|
-
if (
|
|
131
|
+
if (argv.allowNoWorkspaces === false) {
|
|
134
132
|
throw new ExitException(1);
|
|
135
133
|
}
|
|
136
134
|
}
|
|
137
135
|
}
|
|
136
|
+
_preparePipeline(argv, scripts) {
|
|
137
|
+
const pipeline = new Pipeline();
|
|
138
|
+
pipeline.add(new ScriptsFilter(scripts, true));
|
|
139
|
+
if (argv.private !== undefined) {
|
|
140
|
+
pipeline.add(new PrivateFilter(argv.private));
|
|
141
|
+
}
|
|
142
|
+
if (argv.affected !== undefined) {
|
|
143
|
+
pipeline.add(new AffectedFilter(argv.affected, argv.affectedRevFallback, argv.affectedRevSort));
|
|
144
|
+
}
|
|
145
|
+
return pipeline;
|
|
146
|
+
}
|
|
138
147
|
};
|
|
139
|
-
|
|
148
|
+
_([
|
|
140
149
|
LazyCurrentProject()
|
|
141
150
|
], EachCommand.prototype, "project", void 0);
|
|
142
|
-
EachCommand =
|
|
151
|
+
EachCommand = _([
|
|
143
152
|
Command({
|
|
144
|
-
command: "each <
|
|
145
|
-
describe: "Run
|
|
153
|
+
command: "each <expr>",
|
|
154
|
+
describe: "Run a task expression in many workspace, after having built all theirs dependencies.",
|
|
146
155
|
middlewares: [
|
|
147
156
|
LoadProject
|
|
148
157
|
]
|
|
149
158
|
}),
|
|
150
|
-
|
|
159
|
+
_$1(0, inject(Logger)),
|
|
160
|
+
_$1(1, inject(TaskExpressionService))
|
|
151
161
|
], EachCommand);
|
|
152
162
|
|
|
153
|
-
function _ts_decorate$5(decorators, target, key, desc) {
|
|
154
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
155
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
156
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
157
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
158
|
-
}
|
|
159
163
|
let ExecCommand = class ExecCommand extends TaskCommand {
|
|
160
164
|
// Methods
|
|
161
165
|
builder(parser) {
|
|
@@ -194,10 +198,10 @@ let ExecCommand = class ExecCommand extends TaskCommand {
|
|
|
194
198
|
yield task;
|
|
195
199
|
}
|
|
196
200
|
};
|
|
197
|
-
|
|
201
|
+
_([
|
|
198
202
|
LazyCurrentWorkspace()
|
|
199
203
|
], ExecCommand.prototype, "workspace", void 0);
|
|
200
|
-
ExecCommand =
|
|
204
|
+
ExecCommand = _([
|
|
201
205
|
Command({
|
|
202
206
|
command: "exec <command>",
|
|
203
207
|
aliases: [
|
|
@@ -211,17 +215,6 @@ ExecCommand = _ts_decorate$5([
|
|
|
211
215
|
})
|
|
212
216
|
], ExecCommand);
|
|
213
217
|
|
|
214
|
-
function _ts_decorate$4(decorators, target, key, desc) {
|
|
215
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
216
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
217
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
218
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
219
|
-
}
|
|
220
|
-
function _ts_param$2(paramIndex, decorator) {
|
|
221
|
-
return function(target, key) {
|
|
222
|
-
decorator(target, key, paramIndex);
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
218
|
let GroupCommand = class GroupCommand extends TaskCommand {
|
|
226
219
|
// Constructor
|
|
227
220
|
constructor(taskExpr){
|
|
@@ -257,32 +250,22 @@ let GroupCommand = class GroupCommand extends TaskCommand {
|
|
|
257
250
|
yield group;
|
|
258
251
|
}
|
|
259
252
|
};
|
|
260
|
-
|
|
253
|
+
_([
|
|
261
254
|
LazyCurrentWorkspace()
|
|
262
255
|
], GroupCommand.prototype, "workspace", void 0);
|
|
263
|
-
GroupCommand =
|
|
256
|
+
GroupCommand = _([
|
|
264
257
|
Command({
|
|
265
258
|
command: "group <script..>",
|
|
266
259
|
describe: "Run many scripts inside a workspace (experimental)",
|
|
260
|
+
deprecated: true,
|
|
267
261
|
middlewares: [
|
|
268
262
|
LoadProject,
|
|
269
263
|
LoadWorkspace
|
|
270
264
|
]
|
|
271
265
|
}),
|
|
272
|
-
|
|
266
|
+
_$1(0, inject(TaskExpressionService))
|
|
273
267
|
], GroupCommand);
|
|
274
268
|
|
|
275
|
-
function _ts_decorate$3(decorators, target, key, desc) {
|
|
276
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
277
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
278
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
279
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
280
|
-
}
|
|
281
|
-
function _ts_param$1(paramIndex, decorator) {
|
|
282
|
-
return function(target, key) {
|
|
283
|
-
decorator(target, key, paramIndex);
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
269
|
// Constants
|
|
287
270
|
const LONG_ATTRIBUTES = [
|
|
288
271
|
"name",
|
|
@@ -486,10 +469,10 @@ let ListCommand = class ListCommand extends InkCommand {
|
|
|
486
469
|
};
|
|
487
470
|
}
|
|
488
471
|
};
|
|
489
|
-
|
|
472
|
+
_([
|
|
490
473
|
LazyCurrentProject()
|
|
491
474
|
], ListCommand.prototype, "project", void 0);
|
|
492
|
-
ListCommand =
|
|
475
|
+
ListCommand = _([
|
|
493
476
|
Command({
|
|
494
477
|
command: "list",
|
|
495
478
|
aliases: [
|
|
@@ -500,31 +483,22 @@ ListCommand = _ts_decorate$3([
|
|
|
500
483
|
LoadProject
|
|
501
484
|
]
|
|
502
485
|
}),
|
|
503
|
-
|
|
486
|
+
_$1(0, inject(Logger))
|
|
504
487
|
], ListCommand);
|
|
505
488
|
|
|
506
|
-
function _ts_decorate$2(decorators, target, key, desc) {
|
|
507
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
508
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
509
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
510
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
511
|
-
}
|
|
512
|
-
function _ts_param(paramIndex, decorator) {
|
|
513
|
-
return function(target, key) {
|
|
514
|
-
decorator(target, key, paramIndex);
|
|
515
|
-
};
|
|
516
|
-
}
|
|
517
489
|
let RunCommand = class RunCommand extends TaskCommand {
|
|
518
490
|
// Constructor
|
|
519
|
-
constructor(logger){
|
|
491
|
+
constructor(logger, taskExpression){
|
|
520
492
|
super();
|
|
521
493
|
this.logger = logger;
|
|
494
|
+
this.taskExpression = taskExpression;
|
|
522
495
|
}
|
|
523
496
|
// Methods
|
|
524
497
|
builder(parser) {
|
|
525
|
-
return this.addTaskOptions(parser).positional("
|
|
498
|
+
return this.addTaskOptions(parser).positional("expr", {
|
|
526
499
|
type: "string",
|
|
527
|
-
demandOption: true
|
|
500
|
+
demandOption: true,
|
|
501
|
+
desc: "Script or task expression"
|
|
528
502
|
}).option("build-script", {
|
|
529
503
|
default: "build",
|
|
530
504
|
desc: "Script to use to build dependencies"
|
|
@@ -543,45 +517,48 @@ let RunCommand = class RunCommand extends TaskCommand {
|
|
|
543
517
|
});
|
|
544
518
|
}
|
|
545
519
|
async *prepare(args) {
|
|
546
|
-
// Extract
|
|
547
|
-
const
|
|
548
|
-
if (
|
|
549
|
-
|
|
520
|
+
// Extract expression
|
|
521
|
+
const expr = args._.map((arg)=>arg.toString());
|
|
522
|
+
if (expr[0] === "run") {
|
|
523
|
+
expr.splice(0, 1);
|
|
550
524
|
}
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
525
|
+
expr.unshift(args.expr);
|
|
526
|
+
// Parse task expression
|
|
527
|
+
try {
|
|
528
|
+
const tree = this.taskExpression.parse(expr.join(" "));
|
|
529
|
+
yield await this.taskExpression.buildTask(tree.roots[0], this.workspace, {
|
|
530
|
+
buildScript: args.buildScript,
|
|
531
|
+
buildDeps: args.depsMode
|
|
532
|
+
});
|
|
533
|
+
} catch (err) {
|
|
534
|
+
if (err instanceof TaskExpressionError) {
|
|
535
|
+
this.logger.error(err.message);
|
|
536
|
+
throw new ExitException(1);
|
|
537
|
+
}
|
|
538
|
+
if (err instanceof TaskSyntaxError) {
|
|
539
|
+
this.logger.error(`Syntax error in task expression: ${err.message}`);
|
|
540
|
+
throw new ExitException(1);
|
|
541
|
+
}
|
|
542
|
+
throw err;
|
|
561
543
|
}
|
|
562
544
|
}
|
|
563
545
|
};
|
|
564
|
-
|
|
546
|
+
_([
|
|
565
547
|
LazyCurrentWorkspace()
|
|
566
548
|
], RunCommand.prototype, "workspace", void 0);
|
|
567
|
-
RunCommand =
|
|
549
|
+
RunCommand = _([
|
|
568
550
|
Command({
|
|
569
|
-
command: "run <
|
|
570
|
-
describe: "Run
|
|
551
|
+
command: "run <expr>",
|
|
552
|
+
describe: "Run a task expression in a workspace, after having built all its dependencies.",
|
|
571
553
|
middlewares: [
|
|
572
554
|
LoadProject,
|
|
573
555
|
LoadWorkspace
|
|
574
556
|
]
|
|
575
557
|
}),
|
|
576
|
-
|
|
558
|
+
_$1(0, inject(Logger)),
|
|
559
|
+
_$1(1, inject(TaskExpressionService))
|
|
577
560
|
], RunCommand);
|
|
578
561
|
|
|
579
|
-
function _ts_decorate$1(decorators, target, key, desc) {
|
|
580
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
581
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
582
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
583
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
584
|
-
}
|
|
585
562
|
let TreeCommand = class TreeCommand extends InkCommand {
|
|
586
563
|
// Methods
|
|
587
564
|
*render() {
|
|
@@ -590,10 +567,10 @@ let TreeCommand = class TreeCommand extends InkCommand {
|
|
|
590
567
|
});
|
|
591
568
|
}
|
|
592
569
|
};
|
|
593
|
-
|
|
570
|
+
_([
|
|
594
571
|
LazyCurrentWorkspace()
|
|
595
572
|
], TreeCommand.prototype, "workspace", void 0);
|
|
596
|
-
TreeCommand =
|
|
573
|
+
TreeCommand = _([
|
|
597
574
|
Command({
|
|
598
575
|
command: "tree",
|
|
599
576
|
describe: "Print workspace dependency tree",
|
|
@@ -604,15 +581,9 @@ TreeCommand = _ts_decorate$1([
|
|
|
604
581
|
})
|
|
605
582
|
], TreeCommand);
|
|
606
583
|
|
|
607
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
608
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
609
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
610
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
611
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
612
|
-
}
|
|
613
584
|
let CorePlugin = class CorePlugin {
|
|
614
585
|
};
|
|
615
|
-
CorePlugin =
|
|
586
|
+
CorePlugin = _([
|
|
616
587
|
Plugin({
|
|
617
588
|
name: "core",
|
|
618
589
|
commands: [
|
|
@@ -627,4 +598,4 @@ CorePlugin = _ts_decorate([
|
|
|
627
598
|
], CorePlugin);
|
|
628
599
|
|
|
629
600
|
export { CorePlugin };
|
|
630
|
-
//# sourceMappingURL=core.plugin-
|
|
601
|
+
//# sourceMappingURL=core.plugin-fx8ZOGe-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.plugin-fx8ZOGe-.js","sources":["../src/commands/each.ts","../src/commands/exec.ts","../src/commands/group.ts","../src/commands/list.tsx","../src/commands/run.ts","../src/commands/tree.tsx","../src/core.plugin.ts"],"sourcesContent":["import { Logger } from '@jujulego/logger';\nimport { inject } from 'inversify';\nimport symbols from 'log-symbols';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { AffectedFilter } from '@/src/filters/affected.filter.ts';\nimport { Pipeline } from '@/src/filters/pipeline.ts';\nimport { PrivateFilter } from '@/src/filters/private.filter.ts';\nimport { ScriptsFilter } from '@/src/filters/scripts.filter.ts';\nimport { LazyCurrentProject, LoadProject } from '@/src/middlewares/load-project.ts';\nimport { Command } from '@/src/modules/command.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { type Project } from '@/src/project/project.ts';\nimport { type WorkspaceDepsMode } from '@/src/project/workspace.ts';\nimport { TaskExpressionError, TaskSyntaxError } from '@/src/tasks/errors.ts';\nimport { TaskExpressionService } from '@/src/tasks/task-expression.service.ts';\nimport { ExitException } from '@/src/utils/exit.ts';\n\n// Types\nexport interface EachCommandArgs {\n expr: string;\n 'build-script': string;\n 'deps-mode': WorkspaceDepsMode;\n 'allow-no-workspaces'?: boolean;\n\n // Filters\n private?: boolean;\n\n // Affected filter\n affected: string;\n 'affected-rev-fallback': string;\n 'affected-rev-sort'?: string;\n}\n\n// Command\n@Command({\n command: 'each <expr>',\n describe: 'Run a task expression in many workspace, after having built all theirs dependencies.',\n middlewares: [\n LoadProject\n ]\n})\nexport class EachCommand extends TaskCommand<EachCommandArgs> {\n // Lazy injections\n @LazyCurrentProject()\n readonly project: Project;\n\n // Constructor\n constructor(\n @inject(Logger)\n private readonly logger: Logger,\n @inject(TaskExpressionService)\n private readonly taskExpression: TaskExpressionService,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<EachCommandArgs> {\n return this.addTaskOptions(parser)\n // Run options\n .positional('expr', {\n type: 'string',\n demandOption: true,\n desc: 'Script or task expression',\n })\n .option('build-script', {\n default: 'build',\n desc: 'Script to use to build dependencies'\n })\n .option('deps-mode', {\n alias: 'd',\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('allow-no-workspaces', {\n type: 'boolean',\n default: false,\n desc: 'Allow no matching workspaces. Without it jill will exit with code 1 if no workspace matches',\n })\n\n // Filters\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: 'Filters:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master. Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Filters:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Filters:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n\n // Config\n .strict(false)\n .parserConfiguration({\n 'unknown-options-as-args': true,\n });\n }\n\n async *prepare(argv: ArgumentsCamelCase<EachCommandArgs>) {\n let empty = true;\n\n try {\n // Extract expression\n const expr = argv._.map(arg => arg.toString());\n\n if (expr[0] === 'each') {\n expr.splice(0, 1);\n }\n\n expr.unshift(argv.expr);\n\n const tree = this.taskExpression.parse(expr.join(' '));\n const scripts = Array.from(this.taskExpression.extractScripts(tree));\n\n // Create script tasks\n const pipeline = this._preparePipeline(argv, scripts);\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n const task = await this.taskExpression.buildTask(tree.roots[0], wks, {\n buildScript: argv.buildScript,\n buildDeps: argv.depsMode,\n });\n\n if (task) {\n yield task;\n empty = false;\n }\n }\n } catch (err) {\n if (err instanceof TaskExpressionError) {\n this.logger.error(err.message);\n throw new ExitException(1);\n }\n\n if (err instanceof TaskSyntaxError) {\n this.logger.error(`Syntax error in task expression: ${err.message}`);\n throw new ExitException(1);\n }\n\n throw err;\n }\n\n if (empty) {\n this.logger.error(`${symbols.error} No matching workspace found !`);\n\n if (argv.allowNoWorkspaces === false) {\n throw new ExitException(1);\n }\n }\n }\n\n private _preparePipeline(argv: ArgumentsCamelCase<EachCommandArgs>, scripts: string[]): Pipeline {\n const pipeline = new Pipeline();\n pipeline.add(new ScriptsFilter(scripts, true));\n\n if (argv.private !== undefined) {\n pipeline.add(new PrivateFilter(argv.private));\n }\n\n if (argv.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n argv.affected,\n argv.affectedRevFallback,\n argv.affectedRevSort\n ));\n }\n\n return pipeline;\n }\n}\n","import { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { LoadProject } from '@/src/middlewares/load-project.ts';\nimport { LazyCurrentWorkspace, LoadWorkspace } from '@/src/middlewares/load-workspace.ts';\nimport { type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace.ts';\n\n// Types\nexport interface IExecCommandArgs {\n command: string;\n 'build-script': string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'exec <command>',\n aliases: ['$0'],\n describe: 'Run command inside workspace, after all its dependencies has been built.',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class ExecCommand extends TaskCommand<IExecCommandArgs> {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Methods\n builder(parser: Argv) {\n return this.addTaskOptions(parser)\n .positional('command', { type: 'string', demandOption: true })\n .option('build-script', {\n default: 'build',\n desc: 'Script to use to build dependencies'\n })\n .option('deps-mode', {\n alias: 'd',\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n\n // Documentation\n .example('jill eslint', '')\n .example('jill eslint --env-info', 'Unknown arguments are passed down to command. Here it would run eslint --env-info')\n .example('jill eslint -- -v', 'You can use -- to stop argument parsing. Here it would run eslint -v')\n\n // Config\n .strict(false)\n .parserConfiguration({\n 'unknown-options-as-args': true,\n });\n }\n\n async *prepare(args: ArgumentsCamelCase<IExecCommandArgs>) {\n // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'exec') {\n rest.splice(0, 1);\n }\n\n // Run script in workspace\n const task = await this.workspace.exec(args.command, rest, {\n buildScript: args.buildScript,\n buildDeps: args.depsMode,\n });\n\n yield task;\n }\n}\n","import { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { LoadProject } from '@/src/middlewares/load-project.ts';\nimport { LazyCurrentWorkspace, LoadWorkspace } from '@/src/middlewares/load-workspace.ts';\nimport { type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace.ts';\nimport { TaskExpressionService, type TaskTree } from '@/src/tasks/task-expression.service.ts';\n\n// Types\nexport interface IGroupCommandArgs {\n script: TaskTree;\n 'build-script': string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'group <script..>',\n describe: 'Run many scripts inside a workspace (experimental)',\n deprecated: true,\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class GroupCommand extends TaskCommand<IGroupCommandArgs> {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Constructor\n constructor(\n @inject(TaskExpressionService)\n private readonly taskExpr: TaskExpressionService,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<IGroupCommandArgs> {\n return this.addTaskOptions(parser)\n .positional('script', {\n demandOption: true,\n desc: 'Task expression',\n coerce: (expr: string[]) => this.taskExpr.parse(expr.join(' ')),\n })\n .option('build-script', {\n default: 'build',\n desc: 'Script to use to build dependencies'\n })\n .option('deps-mode', {\n alias: 'd',\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n });\n }\n\n async *prepare(args: ArgumentsCamelCase<IGroupCommandArgs>) {\n // Run script in workspace\n const group = await this.taskExpr.buildTask(args.script.roots[0], this.workspace, {\n buildScript: args.buildScript,\n buildDeps: args.depsMode,\n });\n\n yield group;\n }\n}\n","import { Logger } from '@jujulego/logger';\nimport chalk from 'chalk';\nimport { inject } from 'inversify';\nimport path from 'node:path';\nimport { compare, parse } from 'semver';\nimport slugify from 'slugify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { AffectedFilter } from '@/src/filters/affected.filter.ts';\nimport { Pipeline } from '@/src/filters/pipeline.ts';\nimport { PrivateFilter } from '@/src/filters/private.filter.ts';\nimport { ScriptsFilter } from '@/src/filters/scripts.filter.ts';\nimport { LazyCurrentProject, LoadProject } from '@/src/middlewares/load-project.ts';\nimport { Command } from '@/src/modules/command.ts';\nimport { InkCommand } from '@/src/modules/ink-command.tsx';\nimport { type Project } from '@/src/project/project.ts';\nimport { type Workspace } from '@/src/project/workspace.ts';\nimport List from '@/src/ui/list.tsx';\nimport { ExitException } from '@/src/utils/exit.ts';\nimport { printJson } from '@/src/utils/json.ts';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\nexport type Order = 'asc' | 'desc';\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\nexport interface ListCommandArgs {\n // Filters\n private?: boolean;\n 'with-script'?: string[];\n\n // Affected filter\n affected: string;\n 'affected-rev-fallback': string;\n 'affected-rev-sort'?: string;\n\n // Format\n attrs?: Attribute[];\n headers?: boolean;\n long?: boolean;\n json?: boolean;\n\n // Sort\n 'sort-by'?: Attribute[];\n order: Order;\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 = {\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.default(wks.name)\n} satisfies Record<Attribute, Extractor<string | undefined>>;\n\nconst COMPARATORS = {\n name: (a = '', b = '') => a.localeCompare(b),\n version: (a, b) => compare(parse(a) ?? '0.0.0', parse(b) ?? '0.0.0'),\n root: (a = '', b = '') => a.localeCompare(b),\n slug: (a = '', b = '') => a.localeCompare(b),\n} satisfies Record<Attribute, (a: string | undefined, b: string | undefined) => number>;\n\n// Utils\nfunction 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// Command\n@Command({\n command: 'list',\n aliases: ['ls'],\n describe: 'List workspace',\n middlewares: [\n LoadProject,\n ]\n})\nexport class ListCommand extends InkCommand<ListCommandArgs> {\n // Lazy injections\n @LazyCurrentProject()\n readonly project: Project;\n\n // Constructor\n constructor(\n @inject(Logger)\n private readonly logger: Logger,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<ListCommandArgs> {\n return parser\n // Filters\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) => rev === '' ? 'master' : rev,\n group: 'Filters:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master. Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Filters:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Filters:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n\n // Format\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'] as const,\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 // Sort\n .option('sort-by', {\n alias: 's',\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'] as const,\n group: 'Sort:',\n desc: 'Sort output by given attribute. By default sorts by name if printed'\n })\n .option('order', {\n alias: 'o',\n type: 'string',\n choices: ['asc', 'desc'] as const,\n default: 'asc' as const,\n group: 'Sort:',\n desc: 'Sort order'\n });\n }\n\n async *render(args: ArgumentsCamelCase<ListCommandArgs>) {\n const { attrs, sortBy } = this._applyDefaults(args);\n\n // Load workspaces\n const pipeline = this._preparePipeline(args);\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n workspaces.push(wks);\n }\n\n // Build data\n const data = workspaces.map(wks => buildExtractor(attrs)(wks, args.json || false));\n\n if (sortBy.length > 0) {\n data.sort(this._dataComparator(sortBy, args.order));\n }\n\n // Print list\n if (args.json) {\n printJson(data);\n } else {\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) || '.';\n }\n }\n\n yield <List items={data} headers={args.headers ?? (attrs.length > 1)} />;\n }\n }\n\n private _applyDefaults(argv: ArgumentsCamelCase<ListCommandArgs>): { attrs: Attribute[], sortBy: Attribute[] } {\n // Compute attributes\n let attrs = argv.attrs ?? [];\n\n if (attrs.length === 0) {\n if (argv.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (argv.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = argv.sortBy ?? DEFAULT_ATTRIBUTES;\n }\n }\n\n // Check sorted attributes\n let sortBy = argv.sortBy ?? [];\n\n if (attrs.length > 0 && sortBy.length > 0) {\n const miss = sortBy.filter((attr) => !attrs.includes(attr));\n\n if (miss.length > 0) {\n this.logger.error(`Cannot sort by non printed attributes. Missing ${miss.join(', ')}.`);\n throw new ExitException(1);\n }\n }\n\n if (sortBy.length === 0 && attrs.includes('name')) {\n sortBy = ['name'];\n }\n\n return { attrs, sortBy };\n }\n\n private _preparePipeline(argv: ArgumentsCamelCase<ListCommandArgs>): Pipeline {\n const pipeline = new Pipeline();\n\n if (argv.private !== undefined) {\n pipeline.add(new PrivateFilter(argv.private));\n }\n\n if (argv.withScript) {\n pipeline.add(new ScriptsFilter(argv.withScript));\n }\n\n if (argv.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n argv.affected,\n argv.affectedRevFallback,\n argv.affectedRevSort\n ));\n }\n\n return pipeline;\n }\n\n private _dataComparator(sortBy: Attribute[], order: Order) {\n const factor = order === 'asc' ? 1 : -1;\n\n return (a: Data, b: Data) => {\n for (const attr of sortBy) {\n const diff = COMPARATORS[attr](a[attr], b[attr]);\n\n if (diff !== 0) {\n return factor * diff;\n }\n }\n\n return 0;\n };\n }\n}\n","import { Logger } from '@jujulego/logger';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { LoadProject } from '@/src/middlewares/load-project.ts';\nimport { LazyCurrentWorkspace, LoadWorkspace } from '@/src/middlewares/load-workspace.ts';\nimport { type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace.ts';\nimport { TaskExpressionService } from '@/src/tasks/task-expression.service.ts';\nimport { TaskExpressionError, TaskSyntaxError } from '@/src/tasks/errors.ts';\nimport { ExitException } from '@/src/utils/exit.ts';\n\n// Types\nexport interface IRunCommandArgs {\n expr: string;\n 'build-script': string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'run <expr>',\n describe: 'Run a task expression in a workspace, after having built all its dependencies.',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class RunCommand extends TaskCommand<IRunCommandArgs> {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Constructor\n constructor(\n @inject(Logger)\n private readonly logger: Logger,\n @inject(TaskExpressionService)\n private readonly taskExpression: TaskExpressionService,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv) {\n return this.addTaskOptions(parser)\n .positional('expr', {\n type: 'string',\n demandOption: true,\n desc: 'Script or task expression',\n })\n .option('build-script', {\n default: 'build',\n desc: 'Script to use to build dependencies'\n })\n .option('deps-mode', {\n alias: 'd',\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n\n // Config\n .strict(false)\n .parserConfiguration({\n 'unknown-options-as-args': true,\n });\n }\n\n async *prepare(args: ArgumentsCamelCase<IRunCommandArgs>) {\n // Extract expression\n const expr = args._.map(arg => arg.toString());\n\n if (expr[0] === 'run') {\n expr.splice(0, 1);\n }\n\n expr.unshift(args.expr);\n\n // Parse task expression\n try {\n const tree = this.taskExpression.parse(expr.join(' '));\n\n yield await this.taskExpression.buildTask(tree.roots[0], this.workspace, {\n buildScript: args.buildScript,\n buildDeps: args.depsMode,\n });\n } catch (err) {\n if (err instanceof TaskExpressionError) {\n this.logger.error(err.message);\n throw new ExitException(1);\n }\n\n if (err instanceof TaskSyntaxError) {\n this.logger.error(`Syntax error in task expression: ${err.message}`);\n throw new ExitException(1);\n }\n\n throw err;\n }\n }\n}\n","import { Command } from '@/src/modules/command.ts';\nimport { InkCommand } from '@/src/modules/ink-command.tsx';\nimport { LoadProject } from '@/src/middlewares/load-project.ts';\nimport { LazyCurrentWorkspace, LoadWorkspace } from '@/src/middlewares/load-workspace.ts';\nimport { type Workspace } from '@/src/project/workspace.ts';\nimport WorkspaceTree from '@/src/ui/workspace-tree.tsx';\n\n// Command\n@Command({\n command: 'tree',\n describe: 'Print workspace dependency tree',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class TreeCommand extends InkCommand {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Methods\n *render() {\n yield <WorkspaceTree workspace={this.workspace} />;\n }\n}\n","import { EachCommand } from '@/src/commands/each.ts';\nimport { ExecCommand } from '@/src/commands/exec.ts';\nimport { GroupCommand } from '@/src/commands/group.ts';\nimport { ListCommand } from '@/src/commands/list.tsx';\nimport { RunCommand } from '@/src/commands/run.ts';\nimport { TreeCommand } from '@/src/commands/tree.tsx';\nimport { Plugin } from '@/src/modules/plugin.ts';\n\n// Plugin\n@Plugin({\n name: 'core',\n commands: [\n EachCommand,\n ExecCommand,\n GroupCommand,\n ListCommand,\n RunCommand,\n TreeCommand,\n ]\n})\nexport class CorePlugin {}\n"],"names":["EachCommand","TaskCommand","constructor","taskExpression","logger","builder","parser","addTaskOptions","positional","type","demandOption","desc","option","default","alias","choice","group","coerce","rev","strict","parserConfiguration","prepare","argv","empty","expr","_","map","arg","toString","splice","unshift","tree","parse","join","scripts","Array","from","extractScripts","pipeline","_preparePipeline","wks","filter","project","workspaces","task","buildTask","roots","buildScript","buildDeps","depsMode","err","TaskExpressionError","error","message","ExitException","TaskSyntaxError","symbols","allowNoWorkspaces","Pipeline","add","ScriptsFilter","private","undefined","PrivateFilter","affected","AffectedFilter","affectedRevFallback","affectedRevSort","LazyCurrentProject","Command","command","describe","middlewares","LoadProject","inject","Logger","TaskExpressionService","ExecCommand","example","args","rest","workspace","exec","LazyCurrentWorkspace","aliases","LoadWorkspace","GroupCommand","taskExpr","script","deprecated","LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","version","json","manifest","chalk","grey","root","cwd","slug","slugify","COMPARATORS","a","b","localeCompare","compare","buildExtractor","attrs","data","attr","ListCommand","InkCommand","string","choices","render","sortBy","_applyDefaults","push","length","sort","_dataComparator","order","printJson","d","path","relative","process","_jsx","List","items","headers","long","miss","includes","withScript","factor","diff","RunCommand","TreeCommand","WorkspaceTree","CorePlugin","Plugin","commands"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { type Workspace } from '@/src/project/workspace.ts';
|
|
|
2
2
|
import { type PipelineFilter } from './pipeline.ts';
|
|
3
3
|
export declare class ScriptsFilter implements PipelineFilter {
|
|
4
4
|
readonly scripts: string[];
|
|
5
|
-
|
|
5
|
+
readonly all: boolean;
|
|
6
|
+
constructor(scripts: string[], all?: boolean);
|
|
6
7
|
test(workspace: Workspace): boolean;
|
|
7
8
|
}
|