@lage-run/cli 0.23.5 → 0.23.7

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": "Thu, 10 Oct 2024 20:14:49 GMT",
5
+ "date": "Thu, 17 Oct 2024 20:32:34 GMT",
6
+ "version": "0.23.7",
7
+ "tag": "@lage-run/cli_v0.23.7",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "beachball",
12
+ "package": "@lage-run/cli",
13
+ "comment": "Bump @lage-run/cache to v1.3.5",
14
+ "commit": "not available"
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@lage-run/cli",
19
+ "comment": "Bump @lage-run/config to v0.4.4",
20
+ "commit": "not available"
21
+ },
22
+ {
23
+ "author": "beachball",
24
+ "package": "@lage-run/cli",
25
+ "comment": "Bump @lage-run/hasher to v1.6.1",
26
+ "commit": "not available"
27
+ },
28
+ {
29
+ "author": "beachball",
30
+ "package": "@lage-run/cli",
31
+ "comment": "Bump @lage-run/reporters to v1.2.13",
32
+ "commit": "not available"
33
+ },
34
+ {
35
+ "author": "beachball",
36
+ "package": "@lage-run/cli",
37
+ "comment": "Bump @lage-run/runners to v1.0.4",
38
+ "commit": "not available"
39
+ },
40
+ {
41
+ "author": "beachball",
42
+ "package": "@lage-run/cli",
43
+ "comment": "Bump @lage-run/scheduler to v1.3.4",
44
+ "commit": "not available"
45
+ },
46
+ {
47
+ "author": "beachball",
48
+ "package": "@lage-run/cli",
49
+ "comment": "Bump @lage-run/scheduler-types to v0.3.17",
50
+ "commit": "not available"
51
+ },
52
+ {
53
+ "author": "beachball",
54
+ "package": "@lage-run/cli",
55
+ "comment": "Bump @lage-run/target-graph to v0.9.1",
56
+ "commit": "not available"
57
+ }
58
+ ]
59
+ }
60
+ },
61
+ {
62
+ "date": "Fri, 11 Oct 2024 22:09:18 GMT",
63
+ "version": "0.23.6",
64
+ "tag": "@lage-run/cli_v0.23.6",
65
+ "comments": {
66
+ "patch": [
67
+ {
68
+ "author": "kchau@microsoft.com",
69
+ "package": "@lage-run/cli",
70
+ "commit": "cd7a1ed3a889ba4f57205b9779eb292863685dec",
71
+ "comment": "moved the picker creation to be just once to be reused in a singletargetworker"
72
+ },
73
+ {
74
+ "author": "beachball",
75
+ "package": "@lage-run/cli",
76
+ "comment": "Bump @lage-run/reporters to v1.2.12",
77
+ "commit": "not available"
78
+ }
79
+ ]
80
+ }
81
+ },
82
+ {
83
+ "date": "Thu, 10 Oct 2024 20:14:59 GMT",
6
84
  "version": "0.23.5",
7
85
  "tag": "@lage-run/cli_v0.23.5",
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 Thu, 10 Oct 2024 20:14:49 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Thu, 17 Oct 2024 20:32:34 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.23.7
8
+
9
+ Thu, 17 Oct 2024 20:32:34 GMT
10
+
11
+ ### Patches
12
+
13
+ - Bump @lage-run/cache to v1.3.5
14
+ - Bump @lage-run/config to v0.4.4
15
+ - Bump @lage-run/hasher to v1.6.1
16
+ - Bump @lage-run/reporters to v1.2.13
17
+ - Bump @lage-run/runners to v1.0.4
18
+ - Bump @lage-run/scheduler to v1.3.4
19
+ - Bump @lage-run/scheduler-types to v0.3.17
20
+ - Bump @lage-run/target-graph to v0.9.1
21
+
22
+ ## 0.23.6
23
+
24
+ Fri, 11 Oct 2024 22:09:18 GMT
25
+
26
+ ### Patches
27
+
28
+ - moved the picker creation to be just once to be reused in a singletargetworker (kchau@microsoft.com)
29
+ - Bump @lage-run/reporters to v1.2.12
30
+
7
31
  ## 0.23.5
8
32
 
9
- Thu, 10 Oct 2024 20:14:49 GMT
33
+ Thu, 10 Oct 2024 20:14:59 GMT
10
34
 
11
35
  ### Patches
12
36
 
@@ -21,7 +21,8 @@ async function serverAction(options) {
21
21
  const { port =5332 , host ="localhost" , timeout =1 } = options;
22
22
  const logger = (0, _logger.default)();
23
23
  options.logLevel = options.logLevel ?? "info";
24
- options.reporter = options.reporter ?? "json";
24
+ options.logFile = options.logFile ?? "node_modules/.cache/lage/server.log";
25
+ options.reporter = options.reporter ?? "verboseFileLog";
25
26
  (0, _initializeReporters.initializeReporters)(logger, options);
26
27
  logger.info(`Starting server on http://${host}:${port}`);
27
28
  const abortController = new AbortController();
@@ -1,13 +1,15 @@
1
1
  /// <reference types="node" />
2
2
  import type { Logger } from "@lage-run/logger";
3
3
  import type { ILageService } from "@lage-run/rpc";
4
+ interface ServiceControls {
5
+ abortController: AbortController;
6
+ countdownToShutdown: () => void;
7
+ clearCountdown: () => void;
8
+ }
4
9
  export declare function createLageService({ cwd, serverControls, logger, maxWorkers, }: {
5
10
  cwd: string;
6
- serverControls: {
7
- abortController: AbortController;
8
- countdownToShutdown: () => void;
9
- clearCountdown: () => void;
10
- };
11
+ serverControls: ServiceControls;
11
12
  logger: Logger;
12
13
  maxWorkers?: number;
13
14
  }): Promise<ILageService>;
15
+ export {};
@@ -36,7 +36,7 @@ let initializedPromise;
36
36
  * @param cwd
37
37
  * @param logger
38
38
  * @returns
39
- */ async function initialize(cwd, logger) {
39
+ */ async function initialize({ cwd , logger , serverControls , nodeArg , taskArgs , maxWorkers }) {
40
40
  if (initializedPromise) {
41
41
  return await initializedPromise;
42
42
  }
@@ -72,31 +72,41 @@ let initializedPromise;
72
72
  });
73
73
  logger.info("Initializing Package Tree");
74
74
  await packageTree.initialize();
75
+ const pool = new _workerthreadspool.WorkerPool({
76
+ script: require.resolve("./singleTargetWorker.js"),
77
+ maxWorkers,
78
+ workerOptions: {
79
+ stderr: true,
80
+ stdout: true,
81
+ workerData: {
82
+ runners: {
83
+ ...(0, _runnerPickerOptions.runnerPickerOptions)(nodeArg, config.npmClient, taskArgs),
84
+ ...config.runners
85
+ }
86
+ }
87
+ }
88
+ });
89
+ serverControls.abortController.signal.addEventListener("abort", ()=>{
90
+ pool?.close();
91
+ });
92
+ pool?.on("idle", ()=>{
93
+ logger.info("All workers are idle, shutting down after timeout");
94
+ serverControls.countdownToShutdown();
95
+ });
75
96
  return {
76
97
  config,
77
98
  targetGraph,
78
99
  packageTree,
79
100
  dependencyMap,
80
- root
101
+ root,
102
+ pool
81
103
  };
82
104
  }
83
105
  initializedPromise = createInitializedPromise();
84
106
  return await initializedPromise;
85
107
  }
86
- let pool;
87
108
  async function createLageService({ cwd , serverControls , logger , maxWorkers }) {
88
109
  logger.info(`Server started with ${maxWorkers} workers`);
89
- pool = new _workerthreadspool.WorkerPool({
90
- script: require.resolve("./singleTargetWorker.js"),
91
- maxWorkers
92
- });
93
- serverControls.abortController.signal.addEventListener("abort", ()=>{
94
- pool?.close();
95
- });
96
- pool?.on("idle", ()=>{
97
- logger.info("All workers are idle, shutting down after timeout");
98
- serverControls.countdownToShutdown();
99
- });
100
110
  return {
101
111
  async ping () {
102
112
  return {
@@ -105,7 +115,17 @@ async function createLageService({ cwd , serverControls , logger , maxWorkers }
105
115
  },
106
116
  async runTarget (request) {
107
117
  serverControls.clearCountdown();
108
- const { config , targetGraph , dependencyMap , packageTree , root } = await initialize(cwd, logger);
118
+ // THIS IS A BIG ASSUMPTION; TODO: memoize based on the parameters of the initialize() call
119
+ // The first request sets up the nodeArg and taskArgs - we are assuming that all requests to run this target are coming from the same
120
+ // `lage info` call
121
+ const { config , targetGraph , dependencyMap , packageTree , root , pool } = await initialize({
122
+ cwd,
123
+ logger,
124
+ nodeArg: request.nodeOptions,
125
+ taskArgs: request.taskArgs,
126
+ serverControls,
127
+ maxWorkers
128
+ });
109
129
  logger.info("Running target", request);
110
130
  const runners = (0, _runnerPickerOptions.runnerPickerOptions)(request.nodeOptions, config.npmClient, request.taskArgs);
111
131
  const id = (0, _targetgraph.getTargetId)(request.packageName, request.task);
@@ -4,10 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  const _workerthreadspool = require("@lage-run/worker-threads-pool");
6
6
  const _runners = require("@lage-run/runners");
7
+ const _worker_threads = require("worker_threads");
8
+ async function setup(options) {
9
+ const { runners } = options;
10
+ const runnerPicker = new _runners.TargetRunnerPicker(runners);
11
+ return {
12
+ options,
13
+ runnerPicker
14
+ };
15
+ }
7
16
  (async ()=>{
17
+ const { runnerPicker } = await setup(_worker_threads.workerData);
8
18
  async function run(data, abortSignal) {
9
19
  let value = undefined;
10
- const runnerPicker = new _runners.TargetRunnerPicker(data.runners);
11
20
  const runner = await runnerPicker.pick(data.target);
12
21
  value = await runner.run({
13
22
  target: data.target,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lage-run/cli",
3
- "version": "0.23.5",
3
+ "version": "0.23.7",
4
4
  "description": "Command Line Interface for Lage",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,17 +21,17 @@
21
21
  "lint": "monorepo-scripts lint"
22
22
  },
23
23
  "dependencies": {
24
- "@lage-run/cache": "^1.3.4",
25
- "@lage-run/config": "^0.4.3",
24
+ "@lage-run/cache": "^1.3.5",
25
+ "@lage-run/config": "^0.4.4",
26
26
  "@lage-run/globby": "^14.2.0",
27
- "@lage-run/hasher": "^1.6.0",
27
+ "@lage-run/hasher": "^1.6.1",
28
28
  "@lage-run/logger": "^1.3.1",
29
- "@lage-run/reporters": "^1.2.11",
29
+ "@lage-run/reporters": "^1.2.13",
30
30
  "@lage-run/rpc": "^1.2.3",
31
- "@lage-run/runners": "^1.0.3",
32
- "@lage-run/scheduler": "^1.3.3",
33
- "@lage-run/scheduler-types": "^0.3.16",
34
- "@lage-run/target-graph": "^0.9.0",
31
+ "@lage-run/runners": "^1.0.4",
32
+ "@lage-run/scheduler": "^1.3.4",
33
+ "@lage-run/scheduler-types": "^0.3.17",
34
+ "@lage-run/target-graph": "^0.9.1",
35
35
  "@lage-run/worker-threads-pool": "^0.8.4",
36
36
  "chokidar": "3.5.3",
37
37
  "commander": "9.5.0",