@lage-run/cli 0.19.0 → 0.19.2

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/CHANGELOG.json CHANGED
@@ -2,7 +2,85 @@
2
2
  "name": "@lage-run/cli",
3
3
  "entries": [
4
4
  {
5
- "date": "Fri, 06 Sep 2024 20:02:51 GMT",
5
+ "date": "Wed, 11 Sep 2024 20:30:17 GMT",
6
+ "version": "0.19.2",
7
+ "tag": "@lage-run/cli_v0.19.2",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "beachball",
12
+ "package": "@lage-run/cli",
13
+ "comment": "Bump @lage-run/cache to v1.3.2",
14
+ "commit": "not available"
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@lage-run/cli",
19
+ "comment": "Bump @lage-run/config to v0.4.1",
20
+ "commit": "not available"
21
+ },
22
+ {
23
+ "author": "beachball",
24
+ "package": "@lage-run/cli",
25
+ "comment": "Bump @lage-run/hasher to v1.3.2",
26
+ "commit": "not available"
27
+ },
28
+ {
29
+ "author": "beachball",
30
+ "package": "@lage-run/cli",
31
+ "comment": "Bump @lage-run/logger to v1.3.1",
32
+ "commit": "not available"
33
+ },
34
+ {
35
+ "author": "beachball",
36
+ "package": "@lage-run/cli",
37
+ "comment": "Bump @lage-run/reporters to v1.2.9",
38
+ "commit": "not available"
39
+ },
40
+ {
41
+ "author": "beachball",
42
+ "package": "@lage-run/cli",
43
+ "comment": "Bump @lage-run/scheduler to v1.2.12",
44
+ "commit": "not available"
45
+ },
46
+ {
47
+ "author": "beachball",
48
+ "package": "@lage-run/cli",
49
+ "comment": "Bump @lage-run/worker-threads-pool to v0.8.1",
50
+ "commit": "not available"
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "date": "Sat, 07 Sep 2024 00:01:57 GMT",
57
+ "version": "0.19.1",
58
+ "tag": "@lage-run/cli_v0.19.1",
59
+ "comments": {
60
+ "patch": [
61
+ {
62
+ "author": "kchau@microsoft.com",
63
+ "package": "@lage-run/cli",
64
+ "commit": "fb00e0249a448bd0ab09a0f68e9ea3456d2a7152",
65
+ "comment": "adding parallelism to server"
66
+ },
67
+ {
68
+ "author": "beachball",
69
+ "package": "@lage-run/cli",
70
+ "comment": "Bump @lage-run/config to v0.4.0",
71
+ "commit": "not available"
72
+ },
73
+ {
74
+ "author": "beachball",
75
+ "package": "@lage-run/cli",
76
+ "comment": "Bump @lage-run/scheduler to v1.2.11",
77
+ "commit": "not available"
78
+ }
79
+ ]
80
+ }
81
+ },
82
+ {
83
+ "date": "Fri, 06 Sep 2024 20:03:01 GMT",
6
84
  "version": "0.19.0",
7
85
  "tag": "@lage-run/cli_v0.19.0",
8
86
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,36 @@
1
1
  # Change Log - @lage-run/cli
2
2
 
3
- This log was last generated on Fri, 06 Sep 2024 20:02:51 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 11 Sep 2024 20:30:17 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.19.2
8
+
9
+ Wed, 11 Sep 2024 20:30:17 GMT
10
+
11
+ ### Patches
12
+
13
+ - Bump @lage-run/cache to v1.3.2
14
+ - Bump @lage-run/config to v0.4.1
15
+ - Bump @lage-run/hasher to v1.3.2
16
+ - Bump @lage-run/logger to v1.3.1
17
+ - Bump @lage-run/reporters to v1.2.9
18
+ - Bump @lage-run/scheduler to v1.2.12
19
+ - Bump @lage-run/worker-threads-pool to v0.8.1
20
+
21
+ ## 0.19.1
22
+
23
+ Sat, 07 Sep 2024 00:01:57 GMT
24
+
25
+ ### Patches
26
+
27
+ - adding parallelism to server (kchau@microsoft.com)
28
+ - Bump @lage-run/config to v0.4.0
29
+ - Bump @lage-run/scheduler to v1.2.11
30
+
7
31
  ## 0.19.0
8
32
 
9
- Fri, 06 Sep 2024 20:02:51 GMT
33
+ Fri, 06 Sep 2024 20:03:01 GMT
10
34
 
11
35
  ### Minor changes
12
36
 
@@ -59,7 +59,7 @@ async function workerAction(options, command) {
59
59
  tasks,
60
60
  packageInfos
61
61
  });
62
- const lageService = await (0, _lageService.createLageService)(targetGraph, logger, config.npmClient);
62
+ const lageService = await (0, _lageService.createLageService)(targetGraph, logger, config.npmClient, options.concurrency ?? config.concurrency);
63
63
  const server = await rpc.createServer(lageService);
64
64
  logger.info(`Server listening on http://${host}:${port}`);
65
65
  await server.listen({
@@ -8,10 +8,17 @@ Object.defineProperty(exports, "serverCommand", {
8
8
  return serverCommand;
9
9
  }
10
10
  });
11
+ const _os = /*#__PURE__*/ _interop_require_default(require("os"));
11
12
  const _commander = require("commander");
12
13
  const _action = require("./action.js");
13
14
  const _addLoggerOptions = require("../addLoggerOptions.js");
15
+ function _interop_require_default(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
14
20
  const serverCommand = new _commander.Command("server");
21
+ serverCommand.option("-c|--concurrency <number>", "max jobs to run at a time", (v)=>parseInt(v), _os.default.cpus().length - 1);
15
22
  serverCommand.option("-h|--host <host>", "lage server host", "localhost");
16
23
  serverCommand.option("-p|--port <port>", "lage worker server port", (v)=>parseInt(v), 5332);
17
24
  (0, _addLoggerOptions.addLoggerOptions)(serverCommand).action(_action.workerAction);
@@ -1,4 +1,4 @@
1
1
  import type { Logger } from "@lage-run/logger";
2
2
  import type { ILageService } from "@lage-run/rpc";
3
3
  import { type TargetGraph } from "@lage-run/target-graph";
4
- export declare function createLageService(targetGraph: TargetGraph, logger: Logger, npmClient: string): Promise<ILageService>;
4
+ export declare function createLageService(targetGraph: TargetGraph, logger: Logger, npmClient: string, maxWorkers?: number): Promise<ILageService>;
@@ -8,12 +8,17 @@ Object.defineProperty(exports, "createLageService", {
8
8
  return createLageService;
9
9
  }
10
10
  });
11
- const _runners = require("@lage-run/runners");
12
11
  const _targetgraph = require("@lage-run/target-graph");
13
- async function createLageService(targetGraph, logger, npmClient) {
12
+ async function createLageService(targetGraph, logger, npmClient, maxWorkers) {
13
+ logger.info(`Server started with ${maxWorkers} workers`);
14
+ const poolModule = (await import("@lage-run/worker-threads-pool")).default;
15
+ const pool = new poolModule.WorkerPool({
16
+ script: require.resolve("./singleTargetWorker.js"),
17
+ maxWorkers
18
+ });
14
19
  return {
15
20
  async runTarget (request) {
16
- const pickerOptions = {
21
+ const runners = {
17
22
  npmScript: {
18
23
  script: require.resolve("../run/runners/NpmScriptRunner.js"),
19
24
  options: {
@@ -33,7 +38,6 @@ async function createLageService(targetGraph, logger, npmClient) {
33
38
  options: {}
34
39
  }
35
40
  };
36
- const runnerPicker = new _runners.TargetRunnerPicker(pickerOptions);
37
41
  if (!targetGraph.targets.has((0, _targetgraph.getTargetId)(request.packageName, request.task))) {
38
42
  logger.error(`Target not found: ${request.packageName}#${request.task}`);
39
43
  return {
@@ -43,17 +47,18 @@ async function createLageService(targetGraph, logger, npmClient) {
43
47
  };
44
48
  }
45
49
  const target = targetGraph.targets.get((0, _targetgraph.getTargetId)(request.packageName, request.task));
46
- const runner = await runnerPicker.pick(target);
50
+ const task = {
51
+ target,
52
+ runners
53
+ };
47
54
  try {
48
- if (await runner.shouldRun(target)) {
49
- logger.info(`Running target ${request.packageName}#${request.task}`);
50
- await runner.run({
51
- target,
52
- weight: 0,
53
- abortSignal: new AbortController().signal
54
- });
55
- logger.info(`Finished target ${request.packageName}#${request.task}`);
56
- }
55
+ await pool.exec(task, 0, (worker, stdout, stderr)=>{
56
+ logger.info(`[${worker.threadId}] ${request.packageName}#${request.task} start`);
57
+ stdout.pipe(process.stdout);
58
+ stderr.pipe(process.stderr);
59
+ }, (worker)=>{
60
+ logger.info(`[${worker.threadId}] ${request.packageName}#${request.task} end`);
61
+ });
57
62
  return {
58
63
  packageName: request.packageName,
59
64
  task: request.task,
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _workerthreadspool = require("@lage-run/worker-threads-pool");
6
+ const _runners = require("@lage-run/runners");
7
+ (async ()=>{
8
+ async function run(data, abortSignal) {
9
+ let value = undefined;
10
+ const runnerPicker = new _runners.TargetRunnerPicker(data.runners);
11
+ const runner = await runnerPicker.pick(data.target);
12
+ value = await runner.run({
13
+ target: data.target,
14
+ weight: 0,
15
+ abortSignal
16
+ });
17
+ return {
18
+ skipped: false,
19
+ hash: undefined,
20
+ value
21
+ };
22
+ }
23
+ (0, _workerthreadspool.registerWorker)(run);
24
+ })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lage-run/cli",
3
- "version": "0.19.0",
3
+ "version": "0.19.2",
4
4
  "description": "Command Line Interface for Lage",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,16 +20,17 @@
20
20
  "lint": "monorepo-scripts lint"
21
21
  },
22
22
  "dependencies": {
23
- "@lage-run/cache": "^1.3.1",
24
- "@lage-run/config": "^0.3.7",
25
- "@lage-run/hasher": "^1.3.1",
26
- "@lage-run/logger": "^1.3.0",
27
- "@lage-run/reporters": "^1.2.8",
23
+ "@lage-run/cache": "^1.3.2",
24
+ "@lage-run/config": "^0.4.1",
25
+ "@lage-run/hasher": "^1.3.2",
26
+ "@lage-run/logger": "^1.3.1",
27
+ "@lage-run/reporters": "^1.2.9",
28
28
  "@lage-run/rpc": "^1.1.0",
29
29
  "@lage-run/runners": "^1.0.1",
30
- "@lage-run/scheduler": "^1.2.10",
30
+ "@lage-run/scheduler": "^1.2.12",
31
31
  "@lage-run/scheduler-types": "^0.3.14",
32
32
  "@lage-run/target-graph": "^0.8.9",
33
+ "@lage-run/worker-threads-pool": "^0.8.1",
33
34
  "chokidar": "3.5.3",
34
35
  "commander": "9.5.0",
35
36
  "execa": "5.1.1",