@lage-run/cli 0.23.11 → 0.24.0
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 +64 -1
- package/CHANGELOG.md +18 -2
- package/lib/cache/createCacheProvider.js +1 -1
- package/lib/cache/createCacheProvider.js.map +1 -0
- package/lib/cache/isRunningFromCI.js.map +1 -0
- package/lib/cli.js.map +1 -0
- package/lib/commands/addFilterOptions.js.map +1 -0
- package/lib/commands/addLoggerOptions.js.map +1 -0
- package/lib/commands/affected/action.js +4 -4
- package/lib/commands/affected/action.js.map +1 -0
- package/lib/commands/affected/index.js.map +1 -0
- package/lib/commands/cache/action.js.map +1 -0
- package/lib/commands/cache/clearCache.js +1 -1
- package/lib/commands/cache/clearCache.js.map +1 -0
- package/lib/commands/cache/index.js.map +1 -0
- package/lib/commands/cache/pruneCache.js +1 -1
- package/lib/commands/cache/pruneCache.js.map +1 -0
- package/lib/commands/cache/runners/ClearCacheRunner.js +2 -2
- package/lib/commands/cache/runners/ClearCacheRunner.js.map +1 -0
- package/lib/commands/cache/runners/PruneCacheRunner.js +2 -2
- package/lib/commands/cache/runners/PruneCacheRunner.js.map +1 -0
- package/lib/commands/createReporter.js +1 -1
- package/lib/commands/createReporter.js.map +1 -0
- package/lib/commands/exec/action.js +1 -1
- package/lib/commands/exec/action.js.map +1 -0
- package/lib/commands/exec/executeInProcess.js +4 -4
- package/lib/commands/exec/executeInProcess.js.map +1 -0
- package/lib/commands/exec/executeRemotely.js +3 -3
- package/lib/commands/exec/executeRemotely.js.map +1 -0
- package/lib/commands/exec/expandTargetDefinition.js.map +1 -0
- package/lib/commands/exec/index.js.map +1 -0
- package/lib/commands/exec/simulateFileAccess.js.map +1 -0
- package/lib/commands/info/action.js +3 -3
- package/lib/commands/info/action.js.map +1 -0
- package/lib/commands/info/index.js.map +1 -0
- package/lib/commands/init/action.js.map +1 -0
- package/lib/commands/init/index.js.map +1 -0
- package/lib/commands/initializeReporters.js +1 -1
- package/lib/commands/initializeReporters.js.map +1 -0
- package/lib/commands/isRunningFromCI.js.map +1 -0
- package/lib/commands/parseServerOption.js.map +1 -0
- package/lib/commands/run/action.js.map +1 -0
- package/lib/commands/run/createTargetGraph.d.ts +2 -2
- package/lib/commands/run/createTargetGraph.js +3 -3
- package/lib/commands/run/createTargetGraph.js.map +1 -0
- package/lib/commands/run/filterArgsForTasks.js.map +1 -0
- package/lib/commands/run/filterPipelineDefinitions.js.map +1 -0
- package/lib/commands/run/index.js.map +1 -0
- package/lib/commands/run/runAction.js +3 -3
- package/lib/commands/run/runAction.js.map +1 -0
- package/lib/commands/run/watchAction.js +6 -4
- package/lib/commands/run/watchAction.js.map +1 -0
- package/lib/commands/run/watcher.js.map +1 -0
- package/lib/commands/server/MemoryStream.js +1 -2
- package/lib/commands/server/MemoryStream.js.map +1 -0
- package/lib/commands/server/action.js +1 -1
- package/lib/commands/server/action.js.map +1 -0
- package/lib/commands/server/getOutputFiles.js.map +1 -0
- package/lib/commands/server/index.js.map +1 -0
- package/lib/commands/server/lageService.js +6 -6
- package/lib/commands/server/lageService.js.map +1 -0
- package/lib/commands/server/singleTargetWorker.js +2 -2
- package/lib/commands/server/singleTargetWorker.js.map +1 -0
- package/lib/filter/getFilteredPackages.js +8 -6
- package/lib/filter/getFilteredPackages.js.map +1 -0
- package/lib/getBinPaths.js.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/runnerPickerOptions.js.map +1 -0
- package/lib/runners/NoOpRunner.js.map +1 -0
- package/lib/runners/NpmScriptRunner.js.map +1 -0
- package/lib/runners/WorkerRunner.js.map +1 -0
- package/lib/server.js.map +1 -0
- package/lib/showHelp.js.map +1 -0
- package/lib/types/FilterOptions.js.map +1 -0
- package/lib/types/ReporterInitOptions.js.map +1 -0
- package/lib/types/errors.js.map +1 -0
- package/package.json +9 -9
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,70 @@
|
|
|
2
2
|
"name": "@lage-run/cli",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "Fri, 08 Nov 2024 19:
|
|
5
|
+
"date": "Fri, 08 Nov 2024 19:44:39 GMT",
|
|
6
|
+
"version": "0.24.0",
|
|
7
|
+
"tag": "@lage-run/cli_v0.24.0",
|
|
8
|
+
"comments": {
|
|
9
|
+
"minor": [
|
|
10
|
+
{
|
|
11
|
+
"author": "kchau@microsoft.com",
|
|
12
|
+
"package": "@lage-run/cli",
|
|
13
|
+
"commit": "9b607e71231095c06d49b69e9d5fecb72a542bdd",
|
|
14
|
+
"comment": "add \"shouldRun()\" config to the target config"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"author": "beachball",
|
|
18
|
+
"package": "@lage-run/cli",
|
|
19
|
+
"comment": "Bump @lage-run/cache to v1.3.8",
|
|
20
|
+
"commit": "not available"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"author": "beachball",
|
|
24
|
+
"package": "@lage-run/cli",
|
|
25
|
+
"comment": "Bump @lage-run/config to v0.4.8",
|
|
26
|
+
"commit": "not available"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"author": "beachball",
|
|
30
|
+
"package": "@lage-run/cli",
|
|
31
|
+
"comment": "Bump @lage-run/hasher to v1.6.4",
|
|
32
|
+
"commit": "not available"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"author": "beachball",
|
|
36
|
+
"package": "@lage-run/cli",
|
|
37
|
+
"comment": "Bump @lage-run/reporters to v1.2.16",
|
|
38
|
+
"commit": "not available"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"author": "beachball",
|
|
42
|
+
"package": "@lage-run/cli",
|
|
43
|
+
"comment": "Bump @lage-run/runners to v1.1.0",
|
|
44
|
+
"commit": "not available"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"author": "beachball",
|
|
48
|
+
"package": "@lage-run/cli",
|
|
49
|
+
"comment": "Bump @lage-run/scheduler to v1.3.9",
|
|
50
|
+
"commit": "not available"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"author": "beachball",
|
|
54
|
+
"package": "@lage-run/cli",
|
|
55
|
+
"comment": "Bump @lage-run/scheduler-types to v0.3.20",
|
|
56
|
+
"commit": "not available"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"author": "beachball",
|
|
60
|
+
"package": "@lage-run/cli",
|
|
61
|
+
"comment": "Bump @lage-run/target-graph to v0.10.0",
|
|
62
|
+
"commit": "not available"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"date": "Fri, 08 Nov 2024 19:27:44 GMT",
|
|
6
69
|
"version": "0.23.11",
|
|
7
70
|
"tag": "@lage-run/cli_v0.23.11",
|
|
8
71
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
# Change Log - @lage-run/cli
|
|
2
2
|
|
|
3
|
-
<!-- This log was last generated on Fri, 08 Nov 2024 19:
|
|
3
|
+
<!-- This log was last generated on Fri, 08 Nov 2024 19:44:39 GMT and should not be manually modified. -->
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.24.0
|
|
8
|
+
|
|
9
|
+
Fri, 08 Nov 2024 19:44:39 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- add "shouldRun()" config to the target config (kchau@microsoft.com)
|
|
14
|
+
- Bump @lage-run/cache to v1.3.8
|
|
15
|
+
- Bump @lage-run/config to v0.4.8
|
|
16
|
+
- Bump @lage-run/hasher to v1.6.4
|
|
17
|
+
- Bump @lage-run/reporters to v1.2.16
|
|
18
|
+
- Bump @lage-run/runners to v1.1.0
|
|
19
|
+
- Bump @lage-run/scheduler to v1.3.9
|
|
20
|
+
- Bump @lage-run/scheduler-types to v0.3.20
|
|
21
|
+
- Bump @lage-run/target-graph to v0.10.0
|
|
22
|
+
|
|
7
23
|
## 0.23.11
|
|
8
24
|
|
|
9
|
-
Fri, 08 Nov 2024 19:27:
|
|
25
|
+
Fri, 08 Nov 2024 19:27:44 GMT
|
|
10
26
|
|
|
11
27
|
### Patches
|
|
12
28
|
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "createCache", {
|
|
|
10
10
|
});
|
|
11
11
|
const _hasher = require("@lage-run/hasher");
|
|
12
12
|
async function createCache(options) {
|
|
13
|
-
const { cacheOptions
|
|
13
|
+
const { cacheOptions, root, cliArgs, logger } = options;
|
|
14
14
|
const hasher = new _hasher.TargetHasher({
|
|
15
15
|
root,
|
|
16
16
|
environmentGlob: cacheOptions?.environmentGlob ?? [],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cache/createCacheProvider.ts"],"sourcesContent":["import type { CacheOptions } from \"@lage-run/cache\";\nimport { TargetHasher } from \"@lage-run/hasher\";\nimport type { Logger } from \"@lage-run/logger\";\n\ninterface CreateCacheOptions {\n cacheOptions?: CacheOptions;\n logger: Logger;\n root: string;\n skipLocalCache: boolean;\n cliArgs: string[];\n}\n\nexport async function createCache(options: CreateCacheOptions) {\n const { cacheOptions, root, cliArgs, logger } = options;\n\n const hasher = new TargetHasher({\n root,\n environmentGlob: cacheOptions?.environmentGlob ?? [],\n cacheKey: cacheOptions?.cacheKey,\n cliArgs,\n logger,\n });\n\n await hasher.initialize();\n\n return { hasher };\n}\n"],"names":["createCache","options","cacheOptions","root","cliArgs","logger","hasher","TargetHasher","environmentGlob","cacheKey","initialize"],"mappings":";;;;+BAYsBA;;;eAAAA;;;wBAXO;AAWtB,eAAeA,YAAYC,OAA2B;IAC3D,MAAM,EAAEC,YAAY,EAAEC,IAAI,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAGJ;IAEhD,MAAMK,SAAS,IAAIC,oBAAY,CAAC;QAC9BJ;QACAK,iBAAiBN,cAAcM,mBAAmB,EAAE;QACpDC,UAAUP,cAAcO;QACxBL;QACAC;IACF;IAEA,MAAMC,OAAOI,UAAU;IAEvB,OAAO;QAAEJ;IAAO;AAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cache/isRunningFromCI.ts"],"sourcesContent":["export const isRunningFromCI = process.env.NODE_ENV !== \"test\" && (!!process.env.CI || !!process.env.TF_BUILD);\n"],"names":["isRunningFromCI","process","env","NODE_ENV","CI","TF_BUILD"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,kBAAkBC,QAAQC,GAAG,CAACC,QAAQ,KAAK,UAAW,CAAA,CAAC,CAACF,QAAQC,GAAG,CAACE,EAAE,IAAI,CAAC,CAACH,QAAQC,GAAG,CAACG,QAAQ,AAAD"}
|
package/lib/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\n\nimport { runCommand } from \"./commands/run/index.js\";\nimport { cacheCommand } from \"./commands/cache/index.js\";\nimport { NoTargetFoundError } from \"./types/errors.js\";\nimport { affectedCommand } from \"./commands/affected/index.js\";\nimport { initCommand } from \"./commands/init/index.js\";\nimport { infoCommand } from \"./commands/info/index.js\";\nimport { execCommand } from \"./commands/exec/index.js\";\n\nasync function main() {\n const program = new Command();\n program.addCommand(runCommand, { isDefault: true });\n program.addCommand(cacheCommand);\n program.addCommand(affectedCommand);\n program.addCommand(initCommand);\n program.addCommand(infoCommand);\n program.addCommand(execCommand);\n\n await program.parseAsync(process.argv);\n}\n\nmain().catch((err) => {\n /* eslint-disable no-console */\n switch (err) {\n case NoTargetFoundError:\n console.log(\"lage: no targets found that matches the given scope.\");\n break;\n default:\n console.error(err);\n break;\n }\n /* eslint-enable no-console */\n\n process.exitCode = 1;\n});\n"],"names":["main","program","Command","addCommand","runCommand","isDefault","cacheCommand","affectedCommand","initCommand","infoCommand","execCommand","parseAsync","process","argv","catch","err","NoTargetFoundError","console","log","error","exitCode"],"mappings":";;;;2BAAwB;uBAEG;wBACE;wBACM;wBACH;wBACJ;wBACA;wBACA;AAE5B,eAAeA;IACb,MAAMC,UAAU,IAAIC,kBAAO;IAC3BD,QAAQE,UAAU,CAACC,iBAAU,EAAE;QAAEC,WAAW;IAAK;IACjDJ,QAAQE,UAAU,CAACG,oBAAY;IAC/BL,QAAQE,UAAU,CAACI,uBAAe;IAClCN,QAAQE,UAAU,CAACK,mBAAW;IAC9BP,QAAQE,UAAU,CAACM,mBAAW;IAC9BR,QAAQE,UAAU,CAACO,mBAAW;IAE9B,MAAMT,QAAQU,UAAU,CAACC,QAAQC,IAAI;AACvC;AAEAb,OAAOc,KAAK,CAAC,CAACC;IACZ,6BAA6B,GAC7B,OAAQA;QACN,KAAKC,0BAAkB;YACrBC,QAAQC,GAAG,CAAC;YACZ;QACF;YACED,QAAQE,KAAK,CAACJ;YACd;IACJ;IACA,4BAA4B,GAE5BH,QAAQQ,QAAQ,GAAG;AACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/addFilterOptions.ts"],"sourcesContent":["import type { Command } from \"commander\";\n\nexport function addFilterOptions(program: Command) {\n return program\n .option(\"--scope <scope...>\", \"scopes the run to a subset of packages (by default, includes the dependencies and dependents as well)\")\n .option(\"--no-deps|--no-dependents\", \"disables running any dependents of the scoped packages\")\n .option(\"--include-dependencies|--dependencies\", 'adds the scoped packages dependencies as the \"entry points\" for the target graph run')\n .option(\"--to <scope...>\", \"runs up to a package (shorthand for --scope=<scope...> --no-dependents)\")\n .option(\"--since <since>\", \"only runs packages that have changed since the given commit, tag, or branch\")\n .option(\n \"--ignore <ignore...>\",\n \"ignores files when calculating the scope with `--since` in addition to the files specified in lage.config\",\n []\n );\n}\n"],"names":["addFilterOptions","program","option"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,iBAAiBC,OAAgB;IAC/C,OAAOA,QACJC,MAAM,CAAC,sBAAsB,yGAC7BA,MAAM,CAAC,6BAA6B,0DACpCA,MAAM,CAAC,yCAAyC,wFAChDA,MAAM,CAAC,mBAAmB,2EAC1BA,MAAM,CAAC,mBAAmB,+EAC1BA,MAAM,CACL,wBACA,6GACA,EAAE;AAER"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/addLoggerOptions.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { Option } from \"commander\";\n\nexport function addLoggerOptions(program: Command) {\n const isCI = process.env.CI || process.env.TF_BUILD;\n\n return program\n .option(\"--reporter <reporter...>\", \"reporter\")\n .option(\"--grouped\", \"groups the logs\", false)\n .addOption(new Option(\"--progress\").conflicts([\"reporter\", \"grouped\", \"verbose\"]).default(!isCI))\n .addOption(new Option(\"--log-level <level>\", \"log level\").choices([\"info\", \"warn\", \"error\", \"verbose\", \"silly\"]).conflicts(\"verbose\"))\n .addOption(new Option(\"--log-file <file>\", \"when used with --reporter vfl, writes verbose, ungrouped logs to the specified file\"))\n .option(\"--verbose\", \"verbose output\", false);\n}\n"],"names":["addLoggerOptions","program","isCI","process","env","CI","TF_BUILD","option","addOption","Option","conflicts","default","choices"],"mappings":";;;;+BAGgBA;;;eAAAA;;;2BAFO;AAEhB,SAASA,iBAAiBC,OAAgB;IAC/C,MAAMC,OAAOC,QAAQC,GAAG,CAACC,EAAE,IAAIF,QAAQC,GAAG,CAACE,QAAQ;IAEnD,OAAOL,QACJM,MAAM,CAAC,4BAA4B,YACnCA,MAAM,CAAC,aAAa,mBAAmB,OACvCC,SAAS,CAAC,IAAIC,iBAAM,CAAC,cAAcC,SAAS,CAAC;QAAC;QAAY;QAAW;KAAU,EAAEC,OAAO,CAAC,CAACT,OAC1FM,SAAS,CAAC,IAAIC,iBAAM,CAAC,uBAAuB,aAAaG,OAAO,CAAC;QAAC;QAAQ;QAAQ;QAAS;QAAW;KAAQ,EAAEF,SAAS,CAAC,YAC1HF,SAAS,CAAC,IAAIC,iBAAM,CAAC,qBAAqB,wFAC1CF,MAAM,CAAC,aAAa,kBAAkB;AAC3C"}
|
|
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
|
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
async function affectedAction(options) {
|
|
21
|
-
const { dependencies
|
|
21
|
+
const { dependencies, dependents, since, scope, ignore, outputFormat } = options;
|
|
22
22
|
const cwd = process.cwd();
|
|
23
23
|
const config = await (0, _config.getConfig)(cwd);
|
|
24
24
|
const logger = (0, _logger.default)();
|
|
@@ -59,7 +59,7 @@ async function affectedAction(options) {
|
|
|
59
59
|
console.log(output);
|
|
60
60
|
}
|
|
61
61
|
function renderDefault(props) {
|
|
62
|
-
const { packages
|
|
62
|
+
const { packages } = props;
|
|
63
63
|
return `
|
|
64
64
|
All Affected Packages
|
|
65
65
|
---------------------
|
|
@@ -73,7 +73,7 @@ function renderJson(props) {
|
|
|
73
73
|
}
|
|
74
74
|
function renderGraph(props) {
|
|
75
75
|
const graph = generatePackageGraph(props);
|
|
76
|
-
const { packages
|
|
76
|
+
const { packages } = graph;
|
|
77
77
|
const adjacencies = [];
|
|
78
78
|
for (const [pkg, info] of Object.entries(packages)){
|
|
79
79
|
for (const dep of info.dependencies){
|
|
@@ -90,7 +90,7 @@ ${adjacencies.map((entry)=>` "${entry[0]}" -> "${entry[1]}"`).join("\n")}
|
|
|
90
90
|
`;
|
|
91
91
|
}
|
|
92
92
|
function generatePackageGraph(props) {
|
|
93
|
-
const { packages
|
|
93
|
+
const { packages, packageInfos } = props;
|
|
94
94
|
const packageGraph = packages.reduce((accum, pkg)=>{
|
|
95
95
|
const dependencies = Object.keys(packageInfos[pkg].dependencies ?? {}).filter((dep)=>packages.includes(dep));
|
|
96
96
|
const dependents = Object.keys(packageInfos[pkg].dependents ?? {}).filter((dep)=>packages.includes(dep));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/affected/action.ts"],"sourcesContent":["import createLogger from \"@lage-run/logger\";\nimport { getPackageInfosAsync, getWorkspaceRoot, type PackageInfos } from \"workspace-tools\";\nimport { getConfig } from \"@lage-run/config\";\nimport { getFilteredPackages } from \"../../filter/getFilteredPackages.js\";\nimport type { FilterOptions } from \"../../types/FilterOptions.js\";\n\ninterface AffectedOptions extends FilterOptions {\n outputFormat?: \"json\" | \"graph\" | \"default\";\n}\n\nexport async function affectedAction(options: AffectedOptions) {\n const { dependencies, dependents, since, scope, ignore, outputFormat } = options;\n\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n const logger = createLogger();\n\n const root = getWorkspaceRoot(cwd)!;\n const packageInfos = await getPackageInfosAsync(root);\n\n const packages = getFilteredPackages({\n root,\n logger,\n packageInfos,\n includeDependencies: dependencies,\n includeDependents: dependents,\n since,\n scope,\n repoWideChanges: config.repoWideChanges,\n sinceIgnoreGlobs: ignore,\n });\n\n let output = \"\";\n switch (outputFormat) {\n case \"graph\":\n output = renderGraph({ packages, packageInfos });\n break;\n\n case \"json\":\n output = renderJson({ packages, packageInfos });\n break;\n\n default:\n output = renderDefault({ packages });\n break;\n }\n\n // eslint-disable-next-line no-console\n console.log(output);\n}\n\nfunction renderDefault(props: { packages: string[] }) {\n const { packages } = props;\n return `\nAll Affected Packages\n---------------------\n\n${packages.join(\"\\n\")}\n`;\n}\n\nfunction renderJson(props: { packages: string[]; packageInfos: PackageInfos }) {\n const graph = generatePackageGraph(props);\n return JSON.stringify(graph);\n}\n\nfunction renderGraph(props: { packages: string[]; packageInfos: PackageInfos }) {\n const graph = generatePackageGraph(props);\n const { packages } = graph;\n\n const adjacencies: [string, string][] = [];\n\n for (const [pkg, info] of Object.entries(packages)) {\n for (const dep of info.dependencies) {\n adjacencies.push([pkg, dep]);\n }\n }\n\n return `\ndigraph affected {\n${adjacencies.map((entry) => ` \"${entry[0]}\" -> \"${entry[1]}\"`).join(\"\\n\")}\n} \n`;\n}\n\nfunction generatePackageGraph(props: { packages: string[]; packageInfos: PackageInfos }) {\n const { packages, packageInfos } = props;\n const packageGraph = packages.reduce<{ [pkg: string]: { dependencies: string[]; dependents: string[] } }>((accum, pkg) => {\n const dependencies = Object.keys(packageInfos[pkg].dependencies ?? {}).filter((dep) => packages.includes(dep));\n const dependents = Object.keys(packageInfos[pkg].dependents ?? {}).filter((dep) => packages.includes(dep));\n\n accum[pkg] = {\n dependencies,\n dependents,\n };\n\n return accum;\n }, {});\n\n return { packages: packageGraph, count: packages.length };\n}\n"],"names":["affectedAction","options","dependencies","dependents","since","scope","ignore","outputFormat","cwd","process","config","getConfig","logger","createLogger","root","getWorkspaceRoot","packageInfos","getPackageInfosAsync","packages","getFilteredPackages","includeDependencies","includeDependents","repoWideChanges","sinceIgnoreGlobs","output","renderGraph","renderJson","renderDefault","console","log","props","join","graph","generatePackageGraph","JSON","stringify","adjacencies","pkg","info","Object","entries","dep","push","map","entry","packageGraph","reduce","accum","keys","filter","includes","count","length"],"mappings":";;;;+BAUsBA;;;eAAAA;;;+DAVG;gCACiD;wBAChD;qCACU;;;;;;AAO7B,eAAeA,eAAeC,OAAwB;IAC3D,MAAM,EAAEC,YAAY,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,YAAY,EAAE,GAAGN;IAEzE,MAAMO,MAAMC,QAAQD,GAAG;IACvB,MAAME,SAAS,MAAMC,IAAAA,iBAAS,EAACH;IAC/B,MAAMI,SAASC,IAAAA,eAAY;IAE3B,MAAMC,OAAOC,IAAAA,gCAAgB,EAACP;IAC9B,MAAMQ,eAAe,MAAMC,IAAAA,oCAAoB,EAACH;IAEhD,MAAMI,WAAWC,IAAAA,wCAAmB,EAAC;QACnCL;QACAF;QACAI;QACAI,qBAAqBlB;QACrBmB,mBAAmBlB;QACnBC;QACAC;QACAiB,iBAAiBZ,OAAOY,eAAe;QACvCC,kBAAkBjB;IACpB;IAEA,IAAIkB,SAAS;IACb,OAAQjB;QACN,KAAK;YACHiB,SAASC,YAAY;gBAAEP;gBAAUF;YAAa;YAC9C;QAEF,KAAK;YACHQ,SAASE,WAAW;gBAAER;gBAAUF;YAAa;YAC7C;QAEF;YACEQ,SAASG,cAAc;gBAAET;YAAS;YAClC;IACJ;IAEA,sCAAsC;IACtCU,QAAQC,GAAG,CAACL;AACd;AAEA,SAASG,cAAcG,KAA6B;IAClD,MAAM,EAAEZ,QAAQ,EAAE,GAAGY;IACrB,OAAO,CAAC;;;;AAIV,EAAEZ,SAASa,IAAI,CAAC,MAAM;AACtB,CAAC;AACD;AAEA,SAASL,WAAWI,KAAyD;IAC3E,MAAME,QAAQC,qBAAqBH;IACnC,OAAOI,KAAKC,SAAS,CAACH;AACxB;AAEA,SAASP,YAAYK,KAAyD;IAC5E,MAAME,QAAQC,qBAAqBH;IACnC,MAAM,EAAEZ,QAAQ,EAAE,GAAGc;IAErB,MAAMI,cAAkC,EAAE;IAE1C,KAAK,MAAM,CAACC,KAAKC,KAAK,IAAIC,OAAOC,OAAO,CAACtB,UAAW;QAClD,KAAK,MAAMuB,OAAOH,KAAKpC,YAAY,CAAE;YACnCkC,YAAYM,IAAI,CAAC;gBAACL;gBAAKI;aAAI;QAC7B;IACF;IAEA,OAAO,CAAC;;AAEV,EAAEL,YAAYO,GAAG,CAAC,CAACC,QAAU,CAAC,GAAG,EAAEA,KAAK,CAAC,EAAE,CAAC,MAAM,EAAEA,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEb,IAAI,CAAC,MAAM;;AAE5E,CAAC;AACD;AAEA,SAASE,qBAAqBH,KAAyD;IACrF,MAAM,EAAEZ,QAAQ,EAAEF,YAAY,EAAE,GAAGc;IACnC,MAAMe,eAAe3B,SAAS4B,MAAM,CAAsE,CAACC,OAAOV;QAChH,MAAMnC,eAAeqC,OAAOS,IAAI,CAAChC,YAAY,CAACqB,IAAI,CAACnC,YAAY,IAAI,CAAC,GAAG+C,MAAM,CAAC,CAACR,MAAQvB,SAASgC,QAAQ,CAACT;QACzG,MAAMtC,aAAaoC,OAAOS,IAAI,CAAChC,YAAY,CAACqB,IAAI,CAAClC,UAAU,IAAI,CAAC,GAAG8C,MAAM,CAAC,CAACR,MAAQvB,SAASgC,QAAQ,CAACT;QAErGM,KAAK,CAACV,IAAI,GAAG;YACXnC;YACAC;QACF;QAEA,OAAO4C;IACT,GAAG,CAAC;IAEJ,OAAO;QAAE7B,UAAU2B;QAAcM,OAAOjC,SAASkC,MAAM;IAAC;AAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/affected/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { addFilterOptions } from \"../addFilterOptions.js\";\nimport { affectedAction } from \"./action.js\";\n\nconst affectedCommand = new Command(\"affected\");\n\naddFilterOptions(affectedCommand)\n .action(affectedAction)\n .option(\n \"--output-format <graph|json|default>\",\n `Generate a report about what packages are affected by the current change (defaults to human readable format) ` +\n `\"graph\" will generate a GraphViz .dot file format`\n )\n .option(\"--since <branch>\", \"Calculate changes since this branch (defaults to origin/master)\", \"origin/master\");\n\nexport { affectedCommand };\n"],"names":["affectedCommand","Command","addFilterOptions","action","affectedAction","option"],"mappings":";;;;+BAeSA;;;eAAAA;;;2BAfe;kCACS;wBACF;AAE/B,MAAMA,kBAAkB,IAAIC,kBAAO,CAAC;AAEpCC,IAAAA,kCAAgB,EAACF,iBACdG,MAAM,CAACC,sBAAc,EACrBC,MAAM,CACL,wCACA,CAAC,6GAA6G,CAAC,GAC7G,CAAC,iDAAiD,CAAC,EAEtDA,MAAM,CAAC,oBAAoB,mEAAmE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/cache/action.ts"],"sourcesContent":["import { clearCache } from \"./clearCache.js\";\nimport type { Command } from \"commander\";\nimport { getConfig } from \"@lage-run/config\";\nimport { pruneCache } from \"./pruneCache.js\";\nimport createLogger from \"@lage-run/logger\";\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\n\ninterface CacheOptions extends ReporterInitOptions {\n prune?: number;\n clear?: boolean;\n}\n\nexport async function cacheAction(options: CacheOptions, command: Command) {\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n const logger = createLogger();\n\n if (options.clear) {\n return await clearCache({\n cwd: process.cwd(),\n internalCacheFolder: config.cacheOptions.internalCacheFolder,\n logger,\n concurrency: options.concurrency,\n });\n } else if (options.prune) {\n return await pruneCache({\n pruneDays: options.prune,\n cwd: process.cwd(),\n internalCacheFolder: config.cacheOptions.internalCacheFolder,\n logger,\n concurrency: options.concurrency,\n });\n }\n\n command.help();\n}\n"],"names":["cacheAction","options","command","cwd","process","config","getConfig","logger","createLogger","clear","clearCache","internalCacheFolder","cacheOptions","concurrency","prune","pruneCache","pruneDays","help"],"mappings":";;;;+BAYsBA;;;eAAAA;;;4BAZK;wBAED;4BACC;+DACF;;;;;;AAQlB,eAAeA,YAAYC,OAAqB,EAAEC,OAAgB;IACvE,MAAMC,MAAMC,QAAQD,GAAG;IACvB,MAAME,SAAS,MAAMC,IAAAA,iBAAS,EAACH;IAC/B,MAAMI,SAASC,IAAAA,eAAY;IAE3B,IAAIP,QAAQQ,KAAK,EAAE;QACjB,OAAO,MAAMC,IAAAA,sBAAU,EAAC;YACtBP,KAAKC,QAAQD,GAAG;YAChBQ,qBAAqBN,OAAOO,YAAY,CAACD,mBAAmB;YAC5DJ;YACAM,aAAaZ,QAAQY,WAAW;QAClC;IACF,OAAO,IAAIZ,QAAQa,KAAK,EAAE;QACxB,OAAO,MAAMC,IAAAA,sBAAU,EAAC;YACtBC,WAAWf,QAAQa,KAAK;YACxBX,KAAKC,QAAQD,GAAG;YAChBQ,qBAAqBN,OAAOO,YAAY,CAACD,mBAAmB;YAC5DJ;YACAM,aAAaZ,QAAQY,WAAW;QAClC;IACF;IAEAX,QAAQe,IAAI;AACd"}
|
|
@@ -12,7 +12,7 @@ const _config = require("@lage-run/config");
|
|
|
12
12
|
const _workspacetools = require("workspace-tools");
|
|
13
13
|
const _cache = require("@lage-run/cache");
|
|
14
14
|
async function clearCache(options) {
|
|
15
|
-
const { logger
|
|
15
|
+
const { logger, cwd } = options;
|
|
16
16
|
const config = await (0, _config.getConfig)(cwd);
|
|
17
17
|
const workspaceRoot = (0, _workspacetools.getWorkspaceRoot)(cwd);
|
|
18
18
|
const concurrency = (0, _config.getConcurrency)(options.concurrency, config.concurrency);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/cache/clearCache.ts"],"sourcesContent":["import { getConfig, getConcurrency } from \"@lage-run/config\";\nimport { getWorkspaceRoot } from \"workspace-tools\";\nimport type { Logger } from \"@lage-run/logger\";\nimport { BackfillCacheProvider } from \"@lage-run/cache\";\n\nexport interface ClearCacheOptions {\n cwd: string;\n internalCacheFolder: string;\n logger: Logger;\n concurrency: number;\n}\n\nexport async function clearCache(options: ClearCacheOptions) {\n const { logger, cwd } = options;\n\n const config = await getConfig(cwd);\n\n const workspaceRoot = getWorkspaceRoot(cwd);\n const concurrency = getConcurrency(options.concurrency, config.concurrency);\n\n if (!workspaceRoot) {\n return;\n }\n\n const cacheProvider = new BackfillCacheProvider({\n root: cwd,\n cacheOptions: config.cacheOptions,\n logger,\n });\n\n // eslint-disable-next-line no-console\n console.log(\"Clearing Cache\");\n\n cacheProvider.clear(concurrency);\n\n // eslint-disable-next-line no-console\n console.log(\"Cache Cleared\");\n}\n"],"names":["clearCache","options","logger","cwd","config","getConfig","workspaceRoot","getWorkspaceRoot","concurrency","getConcurrency","cacheProvider","BackfillCacheProvider","root","cacheOptions","console","log","clear"],"mappings":";;;;+BAYsBA;;;eAAAA;;;wBAZoB;gCACT;uBAEK;AAS/B,eAAeA,WAAWC,OAA0B;IACzD,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAE,GAAGF;IAExB,MAAMG,SAAS,MAAMC,IAAAA,iBAAS,EAACF;IAE/B,MAAMG,gBAAgBC,IAAAA,gCAAgB,EAACJ;IACvC,MAAMK,cAAcC,IAAAA,sBAAc,EAACR,QAAQO,WAAW,EAAEJ,OAAOI,WAAW;IAE1E,IAAI,CAACF,eAAe;QAClB;IACF;IAEA,MAAMI,gBAAgB,IAAIC,4BAAqB,CAAC;QAC9CC,MAAMT;QACNU,cAAcT,OAAOS,YAAY;QACjCX;IACF;IAEA,sCAAsC;IACtCY,QAAQC,GAAG,CAAC;IAEZL,cAAcM,KAAK,CAACR;IAEpB,sCAAsC;IACtCM,QAAQC,GAAG,CAAC;AACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/cache/index.ts"],"sourcesContent":["import { Command, Option } from \"commander\";\nimport { addLoggerOptions } from \"../addLoggerOptions.js\";\nimport { cacheAction } from \"./action.js\";\n\nconst cacheCommand = new Command(\"cache\");\n\naddLoggerOptions(cacheCommand)\n .action(cacheAction)\n .addOption(new Option(\"--prune <days>\", \"Prunes cache older than certain number of <days>\").argParser(parseInt).conflicts(\"--clear\"))\n .option(\"--clear\", \"Clears the cache locally\");\n\nexport { cacheCommand };\n"],"names":["cacheCommand","Command","addLoggerOptions","action","cacheAction","addOption","Option","argParser","parseInt","conflicts","option"],"mappings":";;;;+BAWSA;;;eAAAA;;;2BAXuB;kCACC;wBACL;AAE5B,MAAMA,eAAe,IAAIC,kBAAO,CAAC;AAEjCC,IAAAA,kCAAgB,EAACF,cACdG,MAAM,CAACC,mBAAW,EAClBC,SAAS,CAAC,IAAIC,iBAAM,CAAC,kBAAkB,oDAAoDC,SAAS,CAACC,UAAUC,SAAS,CAAC,YACzHC,MAAM,CAAC,WAAW"}
|
|
@@ -12,7 +12,7 @@ const _workspacetools = require("workspace-tools");
|
|
|
12
12
|
const _config = require("@lage-run/config");
|
|
13
13
|
const _cache = require("@lage-run/cache");
|
|
14
14
|
async function pruneCache(options) {
|
|
15
|
-
const { logger
|
|
15
|
+
const { logger, cwd, pruneDays } = options;
|
|
16
16
|
const config = await (0, _config.getConfig)(cwd);
|
|
17
17
|
const workspaceRoot = (0, _workspacetools.getWorkspaceRoot)(cwd);
|
|
18
18
|
const concurrency = (0, _config.getConcurrency)(options.concurrency, config.concurrency);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/cache/pruneCache.ts"],"sourcesContent":["import type { Logger } from \"@lage-run/logger\";\nimport { getWorkspaceRoot } from \"workspace-tools\";\nimport { getConfig, getConcurrency } from \"@lage-run/config\";\nimport { BackfillCacheProvider } from \"@lage-run/cache\";\n\nexport interface PruneCacheOptions {\n cwd: string;\n internalCacheFolder: string;\n logger: Logger;\n concurrency: number;\n pruneDays: number;\n}\n\nexport async function pruneCache(options: PruneCacheOptions) {\n const { logger, cwd, pruneDays } = options;\n\n const config = await getConfig(cwd);\n const workspaceRoot = getWorkspaceRoot(cwd);\n const concurrency = getConcurrency(options.concurrency, config.concurrency);\n\n if (!workspaceRoot) {\n return;\n }\n\n const prunePeriod = pruneDays || 30;\n\n const cacheProvider = new BackfillCacheProvider({\n root: cwd,\n cacheOptions: config.cacheOptions,\n logger,\n });\n\n // eslint-disable-next-line no-console\n console.log(\"Clearing Cache\");\n\n cacheProvider.purge(prunePeriod, concurrency);\n\n // eslint-disable-next-line no-console\n console.log(\"Cache Cleared\");\n}\n"],"names":["pruneCache","options","logger","cwd","pruneDays","config","getConfig","workspaceRoot","getWorkspaceRoot","concurrency","getConcurrency","prunePeriod","cacheProvider","BackfillCacheProvider","root","cacheOptions","console","log","purge"],"mappings":";;;;+BAasBA;;;eAAAA;;;gCAZW;wBACS;uBACJ;AAU/B,eAAeA,WAAWC,OAA0B;IACzD,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGH;IAEnC,MAAMI,SAAS,MAAMC,IAAAA,iBAAS,EAACH;IAC/B,MAAMI,gBAAgBC,IAAAA,gCAAgB,EAACL;IACvC,MAAMM,cAAcC,IAAAA,sBAAc,EAACT,QAAQQ,WAAW,EAAEJ,OAAOI,WAAW;IAE1E,IAAI,CAACF,eAAe;QAClB;IACF;IAEA,MAAMI,cAAcP,aAAa;IAEjC,MAAMQ,gBAAgB,IAAIC,4BAAqB,CAAC;QAC9CC,MAAMX;QACNY,cAAcV,OAAOU,YAAY;QACjCb;IACF;IAEA,sCAAsC;IACtCc,QAAQC,GAAG,CAAC;IAEZL,cAAcM,KAAK,CAACP,aAAaF;IAEjC,sCAAsC;IACtCO,QAAQC,GAAG,CAAC;AACd"}
|
|
@@ -21,8 +21,8 @@ class ClearCacheRunner {
|
|
|
21
21
|
return true;
|
|
22
22
|
}
|
|
23
23
|
async run(runOptions) {
|
|
24
|
-
const { target
|
|
25
|
-
const { clearPaths
|
|
24
|
+
const { target } = runOptions;
|
|
25
|
+
const { clearPaths } = target.options;
|
|
26
26
|
for (const cachePath of clearPaths){
|
|
27
27
|
if (_fs.default.existsSync(cachePath)) {
|
|
28
28
|
const entries = _fs.default.readdirSync(cachePath);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/cache/runners/ClearCacheRunner.ts"],"sourcesContent":["import type { TargetRunner, TargetRunnerOptions } from \"@lage-run/runners\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { rm, stat, unlink } from \"fs/promises\";\n\nexport class ClearCacheRunner implements TargetRunner {\n async shouldRun() {\n return true;\n }\n async run(runOptions: TargetRunnerOptions): Promise<void> {\n const { target } = runOptions;\n const { clearPaths } = target.options!;\n\n for (const cachePath of clearPaths) {\n if (fs.existsSync(cachePath)) {\n const entries = fs.readdirSync(cachePath);\n\n for (const entry of entries) {\n const entryPath = path.join(cachePath, entry);\n const entryStat = await stat(entryPath);\n await removeCacheEntry(entryPath, entryStat);\n }\n }\n }\n }\n}\n\nasync function removeCacheEntry(entryPath: string, entryStat: fs.Stats) {\n if (entryStat.isDirectory()) {\n return rm(entryPath, { recursive: true });\n } else {\n return unlink(entryPath);\n }\n}\n"],"names":["ClearCacheRunner","shouldRun","run","runOptions","target","clearPaths","options","cachePath","fs","existsSync","entries","readdirSync","entry","entryPath","path","join","entryStat","stat","removeCacheEntry","isDirectory","rm","recursive","unlink"],"mappings":";;;;+BAKaA;;;eAAAA;;;2DAJE;6DACE;0BACgB;;;;;;AAE1B,MAAMA;IACX,MAAMC,YAAY;QAChB,OAAO;IACT;IACA,MAAMC,IAAIC,UAA+B,EAAiB;QACxD,MAAM,EAAEC,MAAM,EAAE,GAAGD;QACnB,MAAM,EAAEE,UAAU,EAAE,GAAGD,OAAOE,OAAO;QAErC,KAAK,MAAMC,aAAaF,WAAY;YAClC,IAAIG,WAAE,CAACC,UAAU,CAACF,YAAY;gBAC5B,MAAMG,UAAUF,WAAE,CAACG,WAAW,CAACJ;gBAE/B,KAAK,MAAMK,SAASF,QAAS;oBAC3B,MAAMG,YAAYC,aAAI,CAACC,IAAI,CAACR,WAAWK;oBACvC,MAAMI,YAAY,MAAMC,IAAAA,cAAI,EAACJ;oBAC7B,MAAMK,iBAAiBL,WAAWG;gBACpC;YACF;QACF;IACF;AACF;AAEA,eAAeE,iBAAiBL,SAAiB,EAAEG,SAAmB;IACpE,IAAIA,UAAUG,WAAW,IAAI;QAC3B,OAAOC,IAAAA,YAAE,EAACP,WAAW;YAAEQ,WAAW;QAAK;IACzC,OAAO;QACL,OAAOC,IAAAA,gBAAM,EAACT;IAChB;AACF"}
|
|
@@ -22,8 +22,8 @@ class PruneCacheRunner {
|
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
24
|
async run(runOptions) {
|
|
25
|
-
const { target
|
|
26
|
-
const { clearPaths
|
|
25
|
+
const { target } = runOptions;
|
|
26
|
+
const { clearPaths, prunePeriod, now } = target.options;
|
|
27
27
|
for (const cachePath of clearPaths){
|
|
28
28
|
if (_fs.default.existsSync(cachePath)) {
|
|
29
29
|
const entries = _fs.default.readdirSync(cachePath);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/commands/cache/runners/PruneCacheRunner.ts"],"sourcesContent":["import type { TargetRunner, TargetRunnerOptions } from \"@lage-run/runners\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { rm, stat, unlink } from \"fs/promises\";\n\nconst MS_IN_A_DAY = 1000 * 60 * 60 * 24;\n\nexport class PruneCacheRunner implements TargetRunner {\n async shouldRun() {\n return true;\n }\n async run(runOptions: TargetRunnerOptions): Promise<void> {\n const { target } = runOptions;\n const { clearPaths, prunePeriod, now } = target.options!;\n\n for (const cachePath of clearPaths) {\n if (fs.existsSync(cachePath)) {\n const entries = fs.readdirSync(cachePath);\n\n for (const entry of entries) {\n const entryPath = path.join(cachePath, entry);\n const entryStat = await stat(entryPath);\n\n if (now - entryStat.mtime.getTime() > prunePeriod * MS_IN_A_DAY) {\n await removeCacheEntry(entryPath, entryStat);\n }\n }\n }\n }\n }\n}\n\nasync function removeCacheEntry(entryPath: string, entryStat: fs.Stats) {\n if (entryStat.isDirectory()) {\n return rm(entryPath, { recursive: true });\n } else {\n return unlink(entryPath);\n }\n}\n"],"names":["PruneCacheRunner","MS_IN_A_DAY","shouldRun","run","runOptions","target","clearPaths","prunePeriod","now","options","cachePath","fs","existsSync","entries","readdirSync","entry","entryPath","path","join","entryStat","stat","mtime","getTime","removeCacheEntry","isDirectory","rm","recursive","unlink"],"mappings":";;;;+BAOaA;;;eAAAA;;;2DANE;6DACE;0BACgB;;;;;;AAEjC,MAAMC,cAAc,OAAO,KAAK,KAAK;AAE9B,MAAMD;IACX,MAAME,YAAY;QAChB,OAAO;IACT;IACA,MAAMC,IAAIC,UAA+B,EAAiB;QACxD,MAAM,EAAEC,MAAM,EAAE,GAAGD;QACnB,MAAM,EAAEE,UAAU,EAAEC,WAAW,EAAEC,GAAG,EAAE,GAAGH,OAAOI,OAAO;QAEvD,KAAK,MAAMC,aAAaJ,WAAY;YAClC,IAAIK,WAAE,CAACC,UAAU,CAACF,YAAY;gBAC5B,MAAMG,UAAUF,WAAE,CAACG,WAAW,CAACJ;gBAE/B,KAAK,MAAMK,SAASF,QAAS;oBAC3B,MAAMG,YAAYC,aAAI,CAACC,IAAI,CAACR,WAAWK;oBACvC,MAAMI,YAAY,MAAMC,IAAAA,cAAI,EAACJ;oBAE7B,IAAIR,MAAMW,UAAUE,KAAK,CAACC,OAAO,KAAKf,cAAcN,aAAa;wBAC/D,MAAMsB,iBAAiBP,WAAWG;oBACpC;gBACF;YACF;QACF;IACF;AACF;AAEA,eAAeI,iBAAiBP,SAAiB,EAAEG,SAAmB;IACpE,IAAIA,UAAUK,WAAW,IAAI;QAC3B,OAAOC,IAAAA,YAAE,EAACT,WAAW;YAAEU,WAAW;QAAK;IACzC,OAAO;QACL,OAAOC,IAAAA,gBAAM,EAACX;IAChB;AACF"}
|
|
@@ -19,7 +19,7 @@ function _interop_require_default(obj) {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
function createReporter(reporter, options) {
|
|
22
|
-
const { verbose
|
|
22
|
+
const { verbose, grouped, logLevel: logLevelName, concurrency, profile, progress, logFile } = options;
|
|
23
23
|
const logLevel = _logger.LogLevel[logLevelName];
|
|
24
24
|
const root = (0, _workspacetools.findPackageRoot)(__filename);
|
|
25
25
|
const packageJson = JSON.parse((0, _fs.readFileSync)(_path.default.join(root, "package.json"), "utf-8"));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/createReporter.ts"],"sourcesContent":["import { LogLevel } from \"@lage-run/logger\";\nimport {\n JsonReporter,\n AdoReporter,\n LogReporter,\n ProgressReporter,\n VerboseFileLogReporter,\n ChromeTraceEventsReporter,\n} from \"@lage-run/reporters\";\nimport type { ReporterInitOptions } from \"../types/ReporterInitOptions.js\";\nimport { findPackageRoot } from \"workspace-tools\";\nimport { readFileSync } from \"fs\";\nimport path from \"path\";\n\nexport function createReporter(reporter: string, options: ReporterInitOptions) {\n const { verbose, grouped, logLevel: logLevelName, concurrency, profile, progress, logFile } = options;\n const logLevel = LogLevel[logLevelName];\n\n const root = findPackageRoot(__filename)!;\n const packageJson = JSON.parse(readFileSync(path.join(root, \"package.json\"), \"utf-8\"));\n const version = packageJson.version;\n\n switch (reporter) {\n case \"profile\":\n return new ChromeTraceEventsReporter({\n concurrency,\n outputFile: typeof profile === \"string\" ? profile : undefined,\n });\n case \"json\":\n return new JsonReporter({ logLevel });\n case \"azureDevops\":\n case \"adoLog\":\n return new AdoReporter({ grouped, logLevel: verbose ? LogLevel.verbose : logLevel });\n\n case \"npmLog\":\n case \"old\":\n return new LogReporter({ grouped, logLevel: verbose ? LogLevel.verbose : logLevel });\n\n case \"verboseFileLog\":\n case \"vfl\":\n return new VerboseFileLogReporter(logFile);\n\n default:\n if (progress && !(logLevel >= LogLevel.verbose || verbose || grouped)) {\n return new ProgressReporter({ concurrency, version });\n }\n\n return new LogReporter({ grouped, logLevel: verbose ? LogLevel.verbose : logLevel });\n }\n}\n"],"names":["createReporter","reporter","options","verbose","grouped","logLevel","logLevelName","concurrency","profile","progress","logFile","LogLevel","root","findPackageRoot","__filename","packageJson","JSON","parse","readFileSync","path","join","version","ChromeTraceEventsReporter","outputFile","undefined","JsonReporter","AdoReporter","LogReporter","VerboseFileLogReporter","ProgressReporter"],"mappings":";;;;+BAcgBA;;;eAAAA;;;wBAdS;2BAQlB;gCAEyB;oBACH;6DACZ;;;;;;AAEV,SAASA,eAAeC,QAAgB,EAAEC,OAA4B;IAC3E,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,UAAUC,YAAY,EAAEC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,OAAO,EAAE,GAAGR;IAC9F,MAAMG,WAAWM,gBAAQ,CAACL,aAAa;IAEvC,MAAMM,OAAOC,IAAAA,+BAAe,EAACC;IAC7B,MAAMC,cAAcC,KAAKC,KAAK,CAACC,IAAAA,gBAAY,EAACC,aAAI,CAACC,IAAI,CAACR,MAAM,iBAAiB;IAC7E,MAAMS,UAAUN,YAAYM,OAAO;IAEnC,OAAQpB;QACN,KAAK;YACH,OAAO,IAAIqB,oCAAyB,CAAC;gBACnCf;gBACAgB,YAAY,OAAOf,YAAY,WAAWA,UAAUgB;YACtD;QACF,KAAK;YACH,OAAO,IAAIC,uBAAY,CAAC;gBAAEpB;YAAS;QACrC,KAAK;QACL,KAAK;YACH,OAAO,IAAIqB,sBAAW,CAAC;gBAAEtB;gBAASC,UAAUF,UAAUQ,gBAAQ,CAACR,OAAO,GAAGE;YAAS;QAEpF,KAAK;QACL,KAAK;YACH,OAAO,IAAIsB,sBAAW,CAAC;gBAAEvB;gBAASC,UAAUF,UAAUQ,gBAAQ,CAACR,OAAO,GAAGE;YAAS;QAEpF,KAAK;QACL,KAAK;YACH,OAAO,IAAIuB,iCAAsB,CAAClB;QAEpC;YACE,IAAID,YAAY,CAAEJ,CAAAA,YAAYM,gBAAQ,CAACR,OAAO,IAAIA,WAAWC,OAAM,GAAI;gBACrE,OAAO,IAAIyB,2BAAgB,CAAC;oBAAEtB;oBAAac;gBAAQ;YACrD;YAEA,OAAO,IAAIM,sBAAW,CAAC;gBAAEvB;gBAASC,UAAUF,UAAUQ,gBAAQ,CAACR,OAAO,GAAGE;YAAS;IACtF;AACF"}
|
|
@@ -23,7 +23,7 @@ async function execAction(options, command) {
|
|
|
23
23
|
options.logLevel = options.logLevel ?? "info";
|
|
24
24
|
options.reporter = options.reporter ?? "json";
|
|
25
25
|
(0, _initializeReporters.initializeReporters)(logger, options);
|
|
26
|
-
const { server
|
|
26
|
+
const { server } = options;
|
|
27
27
|
if (server) {
|
|
28
28
|
logger.info("Running in server mode");
|
|
29
29
|
await (0, _executeRemotely.executeRemotely)(options, command);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/exec/action.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport createLogger from \"@lage-run/logger\";\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport { initializeReporters } from \"../initializeReporters.js\";\nimport { executeInProcess } from \"./executeInProcess.js\";\nimport { executeRemotely } from \"./executeRemotely.js\";\n\ninterface ExecOptions extends ReporterInitOptions {\n cwd?: string;\n server?: boolean | string;\n timeout?: number;\n nodeArg?: string;\n}\n\nexport async function execAction(options: ExecOptions, command: Command) {\n const logger = createLogger();\n options.cwd = options.cwd ?? process.cwd();\n options.logLevel = options.logLevel ?? \"info\";\n options.reporter = options.reporter ?? \"json\";\n initializeReporters(logger, options);\n\n const { server } = options;\n if (server) {\n logger.info(\"Running in server mode\");\n await executeRemotely(options, command);\n } else {\n await executeInProcess({ logger, args: command.args, cwd: options.cwd, nodeArg: options.nodeArg });\n }\n}\n"],"names":["execAction","options","command","logger","createLogger","cwd","process","logLevel","reporter","initializeReporters","server","info","executeRemotely","executeInProcess","args","nodeArg"],"mappings":";;;;+BAcsBA;;;eAAAA;;;+DAbG;qCAEW;kCACH;iCACD;;;;;;AASzB,eAAeA,WAAWC,OAAoB,EAAEC,OAAgB;IACrE,MAAMC,SAASC,IAAAA,eAAY;IAC3BH,QAAQI,GAAG,GAAGJ,QAAQI,GAAG,IAAIC,QAAQD,GAAG;IACxCJ,QAAQM,QAAQ,GAAGN,QAAQM,QAAQ,IAAI;IACvCN,QAAQO,QAAQ,GAAGP,QAAQO,QAAQ,IAAI;IACvCC,IAAAA,wCAAmB,EAACN,QAAQF;IAE5B,MAAM,EAAES,MAAM,EAAE,GAAGT;IACnB,IAAIS,QAAQ;QACVP,OAAOQ,IAAI,CAAC;QACZ,MAAMC,IAAAA,gCAAe,EAACX,SAASC;IACjC,OAAO;QACL,MAAMW,IAAAA,kCAAgB,EAAC;YAAEV;YAAQW,MAAMZ,QAAQY,IAAI;YAAET,KAAKJ,QAAQI,GAAG;YAAEU,SAASd,QAAQc,OAAO;QAAC;IAClG;AACF"}
|
|
@@ -79,23 +79,23 @@ function _interop_require_default(obj) {
|
|
|
79
79
|
isGlobal: true
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
-
async function executeInProcess({ cwd
|
|
82
|
+
async function executeInProcess({ cwd, args, nodeArg, logger }) {
|
|
83
83
|
const root = (0, _workspacetools.getWorkspaceRoot)(process.cwd());
|
|
84
84
|
const config = await (0, _config.getConfig)(root);
|
|
85
|
-
const { pipeline
|
|
85
|
+
const { pipeline } = config;
|
|
86
86
|
const taskArg = args?.length === 1 ? args?.[0] : args?.[1];
|
|
87
87
|
const packageName = args?.length ?? 0 > 1 ? args?.[0] : undefined;
|
|
88
88
|
if (!taskArg) {
|
|
89
89
|
throw new Error("No task provided");
|
|
90
90
|
}
|
|
91
|
-
const { info
|
|
91
|
+
const { info, task, isGlobal } = parsePackageInfoFromArgs(root, cwd, packageName, taskArg);
|
|
92
92
|
const packageInfos = {
|
|
93
93
|
[info.name]: info
|
|
94
94
|
};
|
|
95
95
|
const resolve = ()=>{
|
|
96
96
|
return _path.default.dirname(info.packageJsonPath).replace(/\\/g, "/");
|
|
97
97
|
};
|
|
98
|
-
const { taskArgs
|
|
98
|
+
const { taskArgs } = (0, _filterArgsForTasks.filterArgsForTasks)(args ?? []);
|
|
99
99
|
const factory = new _targetgraph.TargetFactory({
|
|
100
100
|
root,
|
|
101
101
|
resolve,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/exec/executeInProcess.ts"],"sourcesContent":["import { getConfig } from \"@lage-run/config\";\nimport { TargetFactory } from \"@lage-run/target-graph\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { getPackageInfos, getWorkspaceRoot } from \"workspace-tools\";\nimport { filterArgsForTasks } from \"../run/filterArgsForTasks.js\";\nimport { expandTargetDefinition } from \"./expandTargetDefinition.js\";\nimport { TargetRunnerPicker } from \"@lage-run/runners\";\nimport { type Logger } from \"@lage-run/logger\";\nimport { runnerPickerOptions } from \"../../runnerPickerOptions.js\";\n\ninterface ExecuteInProcessOptions {\n cwd?: string;\n nodeArg?: string;\n args?: string[];\n logger: Logger;\n}\n\n/**\n * Parses the package and task from the command as quickly as possible:\n *\n * 1. if cwd overridden in args, use it to read the package.json directly\n * 2. if cwd not overridden and root is not cwd, use the cwd to read the package.json directly\n * 3. if root is cwd, assume the task is global\n *\n * @param options\n * @param command\n * @returns\n */\nfunction parsePackageInfoFromArgs(root: string, cwd: string | undefined, packageName: string | undefined, task: string) {\n if (packageName && task) {\n const packageInfos = getPackageInfos(root);\n const info = packageInfos[packageName];\n return {\n info,\n task,\n isGlobal: false,\n };\n }\n\n if (cwd) {\n const packageJsonPath = path.join(cwd, \"package.json\");\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n\n return {\n info: {\n ...packageJson,\n packageJsonPath,\n },\n task,\n isGlobal: false,\n };\n }\n\n if (root !== process.cwd()) {\n const packageJsonPath = path.join(process.cwd(), \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n return {\n info: {\n ...packageJson,\n packageJsonPath,\n },\n task,\n isGlobal: false,\n };\n }\n }\n\n const packageJsonPath = path.join(root, \"package.json\");\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n\n return {\n info: {\n ...packageJson,\n packageJsonPath,\n },\n task,\n isGlobal: true,\n };\n}\n\nexport async function executeInProcess({ cwd, args, nodeArg, logger }: ExecuteInProcessOptions) {\n const root = getWorkspaceRoot(process.cwd())!;\n const config = await getConfig(root);\n const { pipeline } = config;\n\n const taskArg = args?.length === 1 ? args?.[0] : args?.[1];\n const packageName = args?.length ?? 0 > 1 ? args?.[0] : undefined;\n\n if (!taskArg) {\n throw new Error(\"No task provided\");\n }\n\n const { info, task, isGlobal } = parsePackageInfoFromArgs(root, cwd, packageName, taskArg);\n\n const packageInfos = { [info.name]: info };\n\n const resolve = () => {\n return path.dirname(info.packageJsonPath).replace(/\\\\/g, \"/\");\n };\n\n const { taskArgs } = filterArgsForTasks(args ?? []);\n\n const factory = new TargetFactory({ root, resolve, packageInfos });\n\n const definition = expandTargetDefinition(isGlobal ? undefined : info.name, task, pipeline, config.cacheOptions.outputGlob ?? []);\n\n const target = isGlobal ? factory.createGlobalTarget(task, definition) : factory.createPackageTarget(info.name, task, definition);\n const pickerOptions = runnerPickerOptions(nodeArg, config.npmClient, taskArgs);\n\n const runnerPicker = new TargetRunnerPicker(pickerOptions);\n const runner = await runnerPicker.pick(target);\n\n if (await runner.shouldRun(target)) {\n logger.info(\"Running target\", { target });\n await runner.run({\n target,\n weight: 1,\n abortSignal: new AbortController().signal,\n });\n logger.info(\"Finished\", { target });\n }\n}\n"],"names":["executeInProcess","parsePackageInfoFromArgs","root","cwd","packageName","task","packageInfos","getPackageInfos","info","isGlobal","packageJsonPath","path","join","packageJson","JSON","parse","fs","readFileSync","process","existsSync","args","nodeArg","logger","getWorkspaceRoot","config","getConfig","pipeline","taskArg","length","undefined","Error","name","resolve","dirname","replace","taskArgs","filterArgsForTasks","factory","TargetFactory","definition","expandTargetDefinition","cacheOptions","outputGlob","target","createGlobalTarget","createPackageTarget","pickerOptions","runnerPickerOptions","npmClient","runnerPicker","TargetRunnerPicker","runner","pick","shouldRun","run","weight","abortSignal","AbortController","signal"],"mappings":"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"}
|
|
@@ -67,7 +67,7 @@ async function executeOnServer(args, client, logger) {
|
|
|
67
67
|
if (!task) {
|
|
68
68
|
throw new Error("No task provided");
|
|
69
69
|
}
|
|
70
|
-
const { taskArgs
|
|
70
|
+
const { taskArgs } = (0, _filterArgsForTasks.filterArgsForTasks)(args ?? []);
|
|
71
71
|
try {
|
|
72
72
|
const response = await client.runTarget({
|
|
73
73
|
packageName,
|
|
@@ -113,9 +113,9 @@ function ensurePidFile(lockfilePath) {
|
|
|
113
113
|
async function executeRemotely(options, command) {
|
|
114
114
|
// launch a 'lage-server.js' process, detached if it is not already running
|
|
115
115
|
// send the command to the server process
|
|
116
|
-
const { server
|
|
116
|
+
const { server } = options;
|
|
117
117
|
const timeout = options.timeout ?? 120;
|
|
118
|
-
const { host
|
|
118
|
+
const { host, port } = (0, _parseServerOption.parseServerOption)(server);
|
|
119
119
|
const logger = (0, _logger.default)();
|
|
120
120
|
options.logLevel = options.logLevel ?? "info";
|
|
121
121
|
options.reporter = options.reporter ?? "json";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/exec/executeRemotely.ts"],"sourcesContent":["import type { Logger } from \"@lage-run/logger\";\nimport createLogger from \"@lage-run/logger\";\nimport { initializeReporters } from \"../initializeReporters.js\";\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport type { LageClient } from \"@lage-run/rpc\";\nimport { ConnectError, createClient } from \"@lage-run/rpc\";\nimport { filterArgsForTasks } from \"../run/filterArgsForTasks.js\";\nimport { simulateFileAccess } from \"./simulateFileAccess.js\";\nimport execa from \"execa\";\nimport { getBinPaths } from \"../../getBinPaths.js\";\nimport { parseServerOption } from \"../parseServerOption.js\";\nimport lockfile from \"proper-lockfile\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { getWorkspaceRoot } from \"workspace-tools\";\n\ninterface ExecRemotelyOptions extends ReporterInitOptions {\n cwd?: string;\n server?: string | boolean;\n timeout?: number;\n}\n\nasync function tryCreateClient(host: string, port: number) {\n const client = createClient({\n baseUrl: `http://${host}:${port}`,\n httpVersion: \"2\",\n });\n\n try {\n const success = await client.ping({});\n if (success.pong) {\n return client;\n }\n } catch (e) {\n if (e instanceof ConnectError) {\n return undefined;\n }\n\n throw e;\n }\n\n return undefined;\n}\n\nasync function tryCreateClientWithRetries(host: string, port: number, logger: Logger) {\n let client: ReturnType<typeof createClient> | undefined;\n\n const start = Date.now();\n while (Date.now() - start < 5 * 1000) {\n try {\n client = await tryCreateClient(host, port);\n\n if (client) {\n return client;\n }\n } catch (e) {\n if (e instanceof ConnectError) {\n logger.error(\"Error connecting to server\", e);\n }\n }\n\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n\n return undefined;\n}\n\nasync function executeOnServer(args: string[], client: LageClient, logger: Logger) {\n const task = args.length === 1 ? args[0] : args[1];\n const packageName = args.length > 1 ? args[0] : undefined;\n\n if (!task) {\n throw new Error(\"No task provided\");\n }\n\n const { taskArgs } = filterArgsForTasks(args ?? []);\n\n try {\n const response = await client.runTarget({\n packageName,\n task,\n taskArgs,\n });\n logger.info(`Task ${response.packageName} ${response.task} exited with code ${response.exitCode} `);\n return response;\n } catch (error) {\n if (error instanceof ConnectError) {\n logger.error(\"Error connecting to server\", { error });\n } else {\n logger.error(\"Error running task\", { error });\n }\n }\n}\n\nfunction isAlive(pid: number) {\n try {\n return process.kill(pid, 0);\n } catch {\n return false;\n }\n}\n\nfunction ensurePidFile(lockfilePath: string) {\n if (!fs.existsSync(path.dirname(lockfilePath))) {\n fs.mkdirSync(path.dirname(lockfilePath), { recursive: true });\n }\n\n if (!fs.existsSync(lockfilePath)) {\n try {\n const fd = fs.openSync(lockfilePath, \"w\");\n fs.closeSync(fd);\n } catch {\n // ignore\n }\n }\n}\n\nexport async function executeRemotely(options: ExecRemotelyOptions, command) {\n // launch a 'lage-server.js' process, detached if it is not already running\n // send the command to the server process\n const { server } = options;\n const timeout = options.timeout ?? 120;\n\n const { host, port } = parseServerOption(server);\n\n const logger = createLogger();\n options.logLevel = options.logLevel ?? \"info\";\n options.reporter = options.reporter ?? \"json\";\n initializeReporters(logger, options);\n\n const root = getWorkspaceRoot(options.cwd ?? process.cwd())!;\n\n const lockfilePath = path.join(root, `node_modules/.cache/lage/.lage-server-${host}-${port}.pid`);\n\n let client = await tryCreateClient(host, port);\n const args = command.args;\n\n if (!client) {\n logger.info(`Starting server on http://${host}:${port}`);\n logger.info(`acquiring lock: ${lockfilePath}`);\n\n ensurePidFile(lockfilePath);\n\n const releaseLock = await lockfile.lock(lockfilePath, {\n stale: 1000 * 60 * 1,\n retries: {\n retries: 10,\n factor: 3,\n minTimeout: 0.5 * 1000,\n maxTimeout: 60 * 1000,\n randomize: true,\n },\n });\n\n const pid = parseInt(fs.readFileSync(lockfilePath, \"utf-8\"));\n const isServerRunning = pid && isAlive(pid);\n logger.info(\"Checking if server is already running\", { pid, isServerRunning });\n if (pid && isServerRunning) {\n logger.info(\"Server already running\", { pid });\n } else {\n const binPaths = getBinPaths();\n const lageServerBinPath = binPaths[\"lage-server\"];\n const lageServerArgs = [\"--host\", host, \"--port\", port, \"--timeout\", timeout, ...args];\n\n logger.info(`Launching lage-server with these parameters: ${lageServerArgs.join(\" \")}`);\n const child = execa(lageServerBinPath, lageServerArgs, {\n cwd: root,\n detached: true,\n stdio: \"ignore\",\n });\n\n if (child && child.pid) {\n fs.writeFileSync(lockfilePath, child.pid.toString());\n }\n\n child.unref();\n logger.info(\"Server started\", { pid: child.pid });\n }\n\n await releaseLock();\n\n logger.info(\"Creating a client to connect to the background services\");\n client = await tryCreateClientWithRetries(host, port, logger);\n\n if (!client) {\n throw new Error(\"Server could not be started\");\n }\n }\n\n logger.info(`Executing on server http://${host}:${port}`);\n const response = await executeOnServer(args, client, logger);\n\n if (response) {\n process.stdout.write(response.stdout);\n process.stderr.write(response.stderr);\n process.exitCode = response.exitCode;\n\n if (response.exitCode === 0) {\n await simulateFileAccess(logger, response.inputs, response.outputs);\n }\n } else {\n process.exitCode = 1;\n }\n\n logger.info(\"Task execution finished\");\n}\n"],"names":["executeRemotely","tryCreateClient","host","port","client","createClient","baseUrl","httpVersion","success","ping","pong","e","ConnectError","undefined","tryCreateClientWithRetries","logger","start","Date","now","error","Promise","resolve","setTimeout","executeOnServer","args","task","length","packageName","Error","taskArgs","filterArgsForTasks","response","runTarget","info","exitCode","isAlive","pid","process","kill","ensurePidFile","lockfilePath","fs","existsSync","path","dirname","mkdirSync","recursive","fd","openSync","closeSync","options","command","server","timeout","parseServerOption","createLogger","logLevel","reporter","initializeReporters","root","getWorkspaceRoot","cwd","join","releaseLock","lockfile","lock","stale","retries","factor","minTimeout","maxTimeout","randomize","parseInt","readFileSync","isServerRunning","binPaths","getBinPaths","lageServerBinPath","lageServerArgs","child","execa","detached","stdio","writeFileSync","toString","unref","stdout","write","stderr","simulateFileAccess","inputs","outputs"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/exec/expandTargetDefinition.ts"],"sourcesContent":["import { type PipelineDefinition } from \"@lage-run/config\";\n\nexport function expandTargetDefinition(packageName: string | undefined, task: string, pipeline: PipelineDefinition, outputs: string[]) {\n const id = packageName ? `${packageName}#${task}` : task;\n const emptyDefinition = {\n cache: false,\n dependsOn: [],\n options: {},\n outputs,\n };\n const definition =\n id in pipeline\n ? pipeline[id]\n : `#${task}` in pipeline\n ? pipeline[`#${task}`]\n : `//${task}` in pipeline\n ? pipeline[`//${task}`]\n : task in pipeline\n ? pipeline[task]\n : emptyDefinition;\n\n if (Array.isArray(definition)) {\n return emptyDefinition;\n } else {\n return definition;\n }\n}\n"],"names":["expandTargetDefinition","packageName","task","pipeline","outputs","id","emptyDefinition","cache","dependsOn","options","definition","Array","isArray"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,uBAAuBC,WAA+B,EAAEC,IAAY,EAAEC,QAA4B,EAAEC,OAAiB;IACnI,MAAMC,KAAKJ,cAAc,GAAGA,YAAY,CAAC,EAAEC,MAAM,GAAGA;IACpD,MAAMI,kBAAkB;QACtBC,OAAO;QACPC,WAAW,EAAE;QACbC,SAAS,CAAC;QACVL;IACF;IACA,MAAMM,aACJL,MAAMF,WACFA,QAAQ,CAACE,GAAG,GACZ,CAAC,CAAC,EAAEH,MAAM,IAAIC,WACdA,QAAQ,CAAC,CAAC,CAAC,EAAED,MAAM,CAAC,GACpB,CAAC,EAAE,EAAEA,MAAM,IAAIC,WACfA,QAAQ,CAAC,CAAC,EAAE,EAAED,MAAM,CAAC,GACrBA,QAAQC,WACRA,QAAQ,CAACD,KAAK,GACdI;IAEN,IAAIK,MAAMC,OAAO,CAACF,aAAa;QAC7B,OAAOJ;IACT,OAAO;QACL,OAAOI;IACT;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/exec/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { execAction } from \"./action.js\";\nimport { addLoggerOptions } from \"../addLoggerOptions.js\";\nimport os from \"os\";\n\nconst execCommand = new Command(\"exec\");\nexecCommand.option(\"-c|--concurrency <number>\", \"max jobs to run at a time\", (v) => parseInt(v), os.cpus().length - 1);\nexecCommand.option(\"-s|--server [host:port]\", \"lage server host\");\nexecCommand.option<number>(\"-t|--timeout <seconds>\", \"lage server autoshutoff timeout\", (v) => parseInt(v), 3 * 60);\n\naddLoggerOptions(execCommand).action(execAction);\nexport { execCommand };\n"],"names":["execCommand","Command","option","v","parseInt","os","cpus","length","addLoggerOptions","action","execAction"],"mappings":";;;;+BAWSA;;;eAAAA;;;2BAXe;wBACG;kCACM;2DAClB;;;;;;AAEf,MAAMA,cAAc,IAAIC,kBAAO,CAAC;AAChCD,YAAYE,MAAM,CAAC,6BAA6B,6BAA6B,CAACC,IAAMC,SAASD,IAAIE,WAAE,CAACC,IAAI,GAAGC,MAAM,GAAG;AACpHP,YAAYE,MAAM,CAAC,2BAA2B;AAC9CF,YAAYE,MAAM,CAAS,0BAA0B,mCAAmC,CAACC,IAAMC,SAASD,IAAI,IAAI;AAEhHK,IAAAA,kCAAgB,EAACR,aAAaS,MAAM,CAACC,kBAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/exec/simulateFileAccess.ts"],"sourcesContent":["import type { Logger } from \"@lage-run/logger\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { getWorkspaceRoot } from \"workspace-tools\";\n\nexport async function simulateFileAccess(logger: Logger, inputs: string[], outputs: string[]) {\n const root = getWorkspaceRoot(process.cwd())!;\n logger.silly(\"Now probing and touching inputs and outputs\");\n\n // probe input files\n let fd: number;\n for (const input of inputs) {\n fd = fs.openSync(path.join(root, input), \"r\");\n fs.closeSync(fd);\n }\n\n // touch output files\n const time = new Date();\n for (const output of outputs) {\n try {\n fs.utimesSync(path.join(root, output), time, time);\n } catch (e) {\n // ignore\n }\n }\n}\n"],"names":["simulateFileAccess","logger","inputs","outputs","root","getWorkspaceRoot","process","cwd","silly","fd","input","fs","openSync","path","join","closeSync","time","Date","output","utimesSync","e"],"mappings":";;;;+BAKsBA;;;eAAAA;;;6DAJL;2DACF;gCACkB;;;;;;AAE1B,eAAeA,mBAAmBC,MAAc,EAAEC,MAAgB,EAAEC,OAAiB;IAC1F,MAAMC,OAAOC,IAAAA,gCAAgB,EAACC,QAAQC,GAAG;IACzCN,OAAOO,KAAK,CAAC;IAEb,oBAAoB;IACpB,IAAIC;IACJ,KAAK,MAAMC,SAASR,OAAQ;QAC1BO,KAAKE,WAAE,CAACC,QAAQ,CAACC,aAAI,CAACC,IAAI,CAACV,MAAMM,QAAQ;QACzCC,WAAE,CAACI,SAAS,CAACN;IACf;IAEA,qBAAqB;IACrB,MAAMO,OAAO,IAAIC;IACjB,KAAK,MAAMC,UAAUf,QAAS;QAC5B,IAAI;YACFQ,WAAE,CAACQ,UAAU,CAACN,aAAI,CAACC,IAAI,CAACV,MAAMc,SAASF,MAAMA;QAC/C,EAAE,OAAOI,GAAG;QACV,SAAS;QACX;IACF;AACF"}
|
|
@@ -37,8 +37,8 @@ async function infoAction(options, command) {
|
|
|
37
37
|
(0, _initializeReporters.initializeReporters)(logger, options);
|
|
38
38
|
const root = (0, _workspacetools.getWorkspaceRoot)(cwd);
|
|
39
39
|
const packageInfos = (0, _workspacetools.getPackageInfos)(root);
|
|
40
|
-
const { tasks
|
|
41
|
-
const targetGraph = (0, _createTargetGraph.createTargetGraph)({
|
|
40
|
+
const { tasks, taskArgs } = (0, _filterArgsForTasks.filterArgsForTasks)(command.args);
|
|
41
|
+
const targetGraph = await (0, _createTargetGraph.createTargetGraph)({
|
|
42
42
|
logger,
|
|
43
43
|
root,
|
|
44
44
|
dependencies: options.dependencies,
|
|
@@ -124,7 +124,7 @@ function generateCommand(target, taskArgs, config, options, binPaths, packageInf
|
|
|
124
124
|
];
|
|
125
125
|
return command;
|
|
126
126
|
} else if (target.type === "worker" && shouldRunWorkersAsService) {
|
|
127
|
-
const { host
|
|
127
|
+
const { host, port } = (0, _parseServerOption.parseServerOption)(options.server);
|
|
128
128
|
const command = [
|
|
129
129
|
binPaths["lage"],
|
|
130
130
|
"exec",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/info/action.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport { createTargetGraph } from \"../run/createTargetGraph.js\";\nimport { filterArgsForTasks } from \"../run/filterArgsForTasks.js\";\nimport type { ConfigOptions } from \"@lage-run/config\";\nimport { getConfig } from \"@lage-run/config\";\nimport { type PackageInfos, getPackageInfos, getWorkspaceRoot } from \"workspace-tools\";\nimport { getFilteredPackages } from \"../../filter/getFilteredPackages.js\";\nimport createLogger from \"@lage-run/logger\";\nimport { removeNodes, transitiveReduction } from \"@lage-run/target-graph\";\nimport path from \"path\";\nimport { parse } from \"shell-quote\";\n\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\nimport type { TargetGraph, Target } from \"@lage-run/target-graph\";\nimport { initializeReporters } from \"../initializeReporters.js\";\nimport { TargetRunnerPicker } from \"@lage-run/runners\";\nimport { getBinPaths } from \"../../getBinPaths.js\";\nimport { runnerPickerOptions } from \"../../runnerPickerOptions.js\";\nimport { parseServerOption } from \"../parseServerOption.js\";\n\ninterface InfoActionOptions extends ReporterInitOptions {\n dependencies: boolean;\n dependents: boolean;\n since: string;\n scope: string[];\n to: string[];\n cache: boolean;\n nodeArg: string;\n ignore: string[];\n server: string;\n}\n\ninterface PackageTask {\n id: string;\n command: string[];\n dependencies: string[];\n workingDirectory: string;\n package: string;\n task: string;\n}\n\n/**\n * The info command displays information about a target graph in a workspace.\n * The generated output can be read and used by other task runners, such as BuildXL.\n *\n * Expected format:\n * [\n * {\n * \"id\": \"bar##build\",\n * \"package\": \"bar\",\n * \"task\": \"build\",\n * \"command\": \"npm run build --blah\",\n * \"workingDirectory\": \"packages/bar\",\n * \"dependencies\": []\n * },\n * {\n * \"id\": \"foo##build\",\n * \"package\": \"foo\",\n * \"task\": \"build\",\n * \"command\": \"npm run build --blah\",\n * \"workingDirectory\": \"packages/foo\",\n * \"dependencies\": [\n * \"bar##build\"\n * ]\n * },\n * {\n * \"id\": \"foo##test\",\n * \"package\": \"foo\",\n * \"task\": \"test\",\n * \"command\": \"npm run test --blah\",\n * \"workingDirectory\": \"packages/foo\",\n * \"dependencies\": [\n * \"foo##build\"\n * ]\n * },\n * ...\n * ]\n */\nexport async function infoAction(options: InfoActionOptions, command: Command) {\n const cwd = process.cwd();\n const config = await getConfig(cwd);\n const logger = createLogger();\n options.logLevel = options.logLevel ?? \"info\";\n options.reporter = options.reporter ?? \"json\";\n options.server = typeof options.server === \"boolean\" && options.server ? \"localhost:5332\" : options.server;\n initializeReporters(logger, options);\n const root = getWorkspaceRoot(cwd)!;\n\n const packageInfos = getPackageInfos(root);\n\n const { tasks, taskArgs } = filterArgsForTasks(command.args);\n\n const targetGraph = await createTargetGraph({\n logger,\n root,\n dependencies: options.dependencies,\n dependents: options.dependents && !options.to, // --to is a short hand for --scope + --no-dependents\n ignore: options.ignore.concat(config.ignore),\n pipeline: config.pipeline,\n repoWideChanges: config.repoWideChanges,\n scope: (options.scope ?? []).concat(options.to ?? []), // --to is a short hand for --scope + --no-dependents\n since: options.since,\n outputs: config.cacheOptions.outputGlob,\n tasks,\n packageInfos,\n });\n\n const scope = getFilteredPackages({\n root,\n packageInfos,\n logger,\n includeDependencies: options.dependencies,\n includeDependents: options.dependents && !options.to, // --to is a short hand for --scope + --no-dependents\n since: options.since,\n scope: (options.scope ?? []).concat(options.to ?? []), // --to is a short hand for --scope + --no-dependents\n repoWideChanges: config.repoWideChanges,\n sinceIgnoreGlobs: options.ignore.concat(config.ignore),\n });\n\n const pickerOptions = runnerPickerOptions(options.nodeArg, config.npmClient, taskArgs);\n\n const runnerPicker = new TargetRunnerPicker(pickerOptions);\n\n const optimizedTargets = await optimizeTargetGraph(targetGraph, runnerPicker);\n const binPaths = getBinPaths();\n const packageTasks = optimizedTargets.map((target) => generatePackageTask(target, taskArgs, config, options, binPaths, packageInfos));\n\n logger.info(\"info\", {\n command: command.args,\n scope,\n packageTasks,\n });\n}\n\nasync function optimizeTargetGraph(graph: TargetGraph, runnerPicker: TargetRunnerPicker) {\n const targetMinimizedNodes = await removeNodes([...graph.targets.values()], async (target) => {\n if (target.type === \"noop\") {\n return true;\n }\n\n const runner = await runnerPicker.pick(target);\n if (!(await runner.shouldRun(target))) {\n return true;\n }\n\n return false;\n });\n\n return transitiveReduction(targetMinimizedNodes);\n}\n\nfunction generatePackageTask(\n target: Target,\n taskArgs: string[],\n config: ConfigOptions,\n options: InfoActionOptions,\n binPaths: { lage: string; \"lage-server\": string },\n packageInfos: PackageInfos\n): PackageTask {\n const command = generateCommand(target, taskArgs, config, options, binPaths, packageInfos);\n const workingDirectory = getWorkingDirectory(target);\n\n const packageTask: PackageTask = {\n id: target.id,\n command,\n dependencies: target.dependencies,\n workingDirectory,\n package: target.packageName ?? \"\",\n task: target.task,\n };\n\n return packageTask;\n}\n\nfunction generateCommand(\n target: Target,\n taskArgs: string[],\n config: ConfigOptions,\n options: InfoActionOptions,\n binPaths: { lage: string; \"lage-server\": string },\n packageInfos: PackageInfos\n) {\n const shouldRunWorkersAsService =\n (typeof process.env.LAGE_WORKER_SERVER === \"string\" && process.env.LAGE_WORKER_SERVER !== \"false\") || !!options.server;\n\n if (target.type === \"npmScript\") {\n const script = target.packageName !== undefined ? packageInfos[target.packageName]?.scripts?.[target.task] : undefined;\n\n // If the script is a node script, and that it does not have any shell operators (&&, ||, etc)\n // then we can simply pass this along to info command rather than using npm client to run it.\n if (script && script.startsWith(\"node\")) {\n const parsed = parse(script);\n if (parsed.length > 0 && parsed.every((entry) => typeof entry === \"string\")) {\n return [...(parsed as string[]), ...taskArgs];\n }\n }\n\n const npmClient = config.npmClient ?? \"npm\";\n const command = [npmClient, ...getNpmArgs(target.task, taskArgs)];\n return command;\n } else if (target.type === \"worker\" && shouldRunWorkersAsService) {\n const { host, port } = parseServerOption(options.server);\n const command = [binPaths[\"lage\"], \"exec\", \"--server\", `${host}:${port}`];\n if (options.concurrency) {\n command.push(\"--concurrency\", options.concurrency.toString());\n }\n\n if (target.packageName) {\n command.push(target.packageName);\n }\n\n if (target.task) {\n command.push(target.task);\n }\n\n command.push(...taskArgs);\n return command;\n } else if (target.type === \"worker\") {\n const command = [binPaths.lage, \"exec\"];\n command.push(target.packageName ?? \"\");\n command.push(target.task);\n command.push(...taskArgs);\n return command;\n }\n\n return [];\n}\n\nfunction getWorkingDirectory(target) {\n const cwd = process.cwd();\n const workingDirectory = path.relative(getWorkspaceRoot(cwd) ?? \"\", target.cwd).replace(/\\\\/g, \"/\");\n return workingDirectory;\n}\n\nfunction getNpmArgs(task: string, taskTargs: string[]) {\n const extraArgs = taskTargs != undefined && taskTargs.length > 0 ? [\"--\", ...taskTargs] : [];\n return [\"run\", task, ...extraArgs];\n}\n"],"names":["infoAction","options","command","cwd","process","config","getConfig","logger","createLogger","logLevel","reporter","server","initializeReporters","root","getWorkspaceRoot","packageInfos","getPackageInfos","tasks","taskArgs","filterArgsForTasks","args","targetGraph","createTargetGraph","dependencies","dependents","to","ignore","concat","pipeline","repoWideChanges","scope","since","outputs","cacheOptions","outputGlob","getFilteredPackages","includeDependencies","includeDependents","sinceIgnoreGlobs","pickerOptions","runnerPickerOptions","nodeArg","npmClient","runnerPicker","TargetRunnerPicker","optimizedTargets","optimizeTargetGraph","binPaths","getBinPaths","packageTasks","map","target","generatePackageTask","info","graph","targetMinimizedNodes","removeNodes","targets","values","type","runner","pick","shouldRun","transitiveReduction","generateCommand","workingDirectory","getWorkingDirectory","packageTask","id","package","packageName","task","shouldRunWorkersAsService","env","LAGE_WORKER_SERVER","script","undefined","scripts","startsWith","parsed","parse","length","every","entry","getNpmArgs","host","port","parseServerOption","concurrency","push","toString","lage","path","relative","replace","taskTargs","extraArgs"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/info/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { infoAction } from \"./action.js\";\nimport { addFilterOptions } from \"../addFilterOptions.js\";\nimport { addLoggerOptions } from \"../addLoggerOptions.js\";\n\nconst infoCommand = new Command(\"info\");\n\naddFilterOptions(addLoggerOptions(infoCommand));\ninfoCommand.description(\"Display information about a target graph in a workspace.\\n\" + \"It is used by BuildXL to build a pip-graph\");\ninfoCommand.option(\"--server [host:port]\", \"Run targets of type 'worker' on a background service\");\ninfoCommand.option(\n \"--nodearg|--node-arg <nodeArg>\",\n 'arguments to be passed to node (e.g. --nodearg=\"--max_old_space_size=1234 --heap-prof\" - set via \"NODE_OPTIONS\" environment variable'\n);\ninfoCommand.action(infoAction);\n\nexport { infoCommand };\n"],"names":["infoCommand","Command","addFilterOptions","addLoggerOptions","description","option","action","infoAction"],"mappings":";;;;+BAgBSA;;;eAAAA;;;2BAhBe;wBACG;kCACM;kCACA;AAEjC,MAAMA,cAAc,IAAIC,kBAAO,CAAC;AAEhCC,IAAAA,kCAAgB,EAACC,IAAAA,kCAAgB,EAACH;AAClCA,YAAYI,WAAW,CAAC,+DAA+D;AACvFJ,YAAYK,MAAM,CAAC,wBAAwB;AAC3CL,YAAYK,MAAM,CAChB,kCACA;AAEFL,YAAYM,MAAM,CAACC,kBAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/init/action.ts"],"sourcesContent":["/* eslint-disable no-console -- logger doesn't work in this context */\nimport { readConfigFile } from \"@lage-run/config\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport execa from \"execa\";\n\ntype WorkspaceManager = \"rush\" | \"pnpm\" | \"yarn\" | \"npm\";\n\nexport async function initAction() {\n const cwd = process.cwd();\n\n const config = await readConfigFile(cwd);\n if (config) {\n console.error(\"lage is already initialized in this workspace\");\n process.exitCode = 1;\n return;\n }\n\n console.info(\"Installing lage and creating a default configuration file\");\n\n let workspaceManager: WorkspaceManager = \"yarn\";\n\n try {\n workspaceManager = whichWorkspaceManager(cwd);\n } catch (e) {\n console.error(\n \"lage requires you to be using a workspace - make sure you are using yarn workspaces, npm workspaces, pnpm workspaces, or rush\"\n );\n process.exitCode = 1;\n return;\n }\n\n const pipeline = {\n build: [\"^build\"],\n test: [\"build\"],\n lint: [],\n };\n\n const lageConfig = {\n pipeline,\n npmClient: workspaceManager === \"yarn\" ? \"yarn\" : \"npm\",\n };\n\n const lageConfigFile = path.join(cwd, \"lage.config.js\");\n fs.writeFileSync(lageConfigFile, \"module.exports = \" + JSON.stringify(lageConfig, null, 2) + \";\");\n\n installLage(cwd, workspaceManager, pipeline);\n\n console.info(`Lage is initialized! You can now run: ${getBuildCommand(workspaceManager)}`);\n}\n\nfunction getBuildCommand(workspaceManager: WorkspaceManager) {\n switch (workspaceManager) {\n case \"yarn\":\n return \"yarn lage build\";\n\n case \"pnpm\":\n return \"pnpm run lage build\";\n\n case \"rush\":\n case \"npm\":\n return \"npm run lage build\";\n }\n}\n\nfunction whichWorkspaceManager(cwd: string) {\n const packageJson = readPackageJson(cwd);\n\n if (fs.existsSync(path.join(cwd, \"rush.json\"))) {\n return \"rush\";\n }\n\n if (fs.existsSync(path.join(cwd, \"yarn.lock\")) && packageJson.workspaces) {\n return \"yarn\";\n }\n\n if (fs.existsSync(path.join(cwd, \"pnpm-workspace.yaml\"))) {\n return \"pnpm\";\n }\n\n if (fs.existsSync(path.join(cwd, \"package-lock.json\")) && packageJson.workspaces) {\n return \"npm\";\n }\n\n throw new Error(\"not a workspace\");\n}\n\nasync function installLage(cwd: string, workspaceManager: WorkspaceManager, pipeline: Record<string, string[]>) {\n const lageVersion = getLageVersion();\n const packageJson = readPackageJson(cwd);\n packageJson.scripts ??= {};\n for (const script of Object.keys(pipeline)) {\n packageJson.scripts[script] = `lage ${script}`;\n }\n\n if (workspaceManager === \"rush\") {\n packageJson.scripts.lage = `node common/scripts/install-run.js lage@${lageVersion} lage`;\n writePackageJson(cwd, packageJson);\n } else {\n packageJson.scripts.lage = \"lage\";\n packageJson.devDependencies ??= {};\n packageJson.devDependencies.lage = lageVersion;\n writePackageJson(cwd, packageJson);\n\n await execa(workspaceManager, [\"install\"], { stdio: \"inherit\", shell: true });\n }\n}\n\nfunction getLageVersion() {\n const lagePackageJsonFile = require.resolve(\"../../package.json\", {\n paths: [__dirname],\n });\n const lagePackageJson = JSON.parse(fs.readFileSync(lagePackageJsonFile, \"utf-8\"));\n return lagePackageJson.version;\n}\n\nfunction writePackageJson(cwd: string, packageJson: any) {\n const packageJsonFile = path.join(cwd, \"package.json\");\n fs.writeFileSync(packageJsonFile, JSON.stringify(packageJson, null, 2));\n}\n\nfunction readPackageJson(cwd: string): {\n scripts?: Record<string, string>;\n devDependencies?: Record<string, string>;\n workspaces?: any;\n} {\n const packageJsonFile = path.join(cwd, \"package.json\");\n return JSON.parse(fs.readFileSync(packageJsonFile, \"utf-8\"));\n}\n"],"names":["initAction","cwd","process","config","readConfigFile","console","error","exitCode","info","workspaceManager","whichWorkspaceManager","e","pipeline","build","test","lint","lageConfig","npmClient","lageConfigFile","path","join","fs","writeFileSync","JSON","stringify","installLage","getBuildCommand","packageJson","readPackageJson","existsSync","workspaces","Error","lageVersion","getLageVersion","scripts","script","Object","keys","lage","writePackageJson","devDependencies","execa","stdio","shell","lagePackageJsonFile","require","resolve","paths","__dirname","lagePackageJson","parse","readFileSync","version","packageJsonFile"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/init/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { addFilterOptions } from \"../addFilterOptions.js\";\nimport { initAction } from \"./action.js\";\n\nconst initCommand = new Command(\"init\");\n\naddFilterOptions(initCommand).description(\"Install lage in a workspace and create a config file\").action(initAction);\n\nexport { initCommand };\n"],"names":["initCommand","Command","addFilterOptions","description","action","initAction"],"mappings":";;;;+BAQSA;;;eAAAA;;;2BARe;kCACS;wBACN;AAE3B,MAAMA,cAAc,IAAIC,kBAAO,CAAC;AAEhCC,IAAAA,kCAAgB,EAACF,aAAaG,WAAW,CAAC,wDAAwDC,MAAM,CAACC,kBAAU"}
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "initializeReporters", {
|
|
|
10
10
|
});
|
|
11
11
|
const _createReporter = require("./createReporter.js");
|
|
12
12
|
function initializeReporters(logger, options) {
|
|
13
|
-
const { reporter
|
|
13
|
+
const { reporter } = options;
|
|
14
14
|
// filter out falsy values (e.g. undefined) from the reporter array
|
|
15
15
|
const reporterOptions = (Array.isArray(reporter) ? reporter : [
|
|
16
16
|
reporter
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/initializeReporters.ts"],"sourcesContent":["import { createReporter } from \"./createReporter.js\";\nimport type { Logger } from \"@lage-run/logger\";\nimport type { ReporterInitOptions } from \"../types/ReporterInitOptions.js\";\n\nexport function initializeReporters(logger: Logger, options: ReporterInitOptions) {\n const { reporter } = options;\n\n // filter out falsy values (e.g. undefined) from the reporter array\n const reporterOptions = (Array.isArray(reporter) ? reporter : [reporter]).filter(Boolean);\n\n if (reporterOptions.length === 0) {\n // \"default\" is just a dummy name to trigger the default case in createReporter\n reporterOptions.push(\"default\");\n }\n\n // add profile reporter if --profile is passed\n if (options.profile) {\n reporterOptions.push(\"profile\");\n }\n\n for (const reporterName of reporterOptions) {\n const reporterInstance = createReporter(reporterName, options);\n logger.addReporter(reporterInstance);\n }\n\n return logger.reporters;\n}\n"],"names":["initializeReporters","logger","options","reporter","reporterOptions","Array","isArray","filter","Boolean","length","push","profile","reporterName","reporterInstance","createReporter","addReporter","reporters"],"mappings":";;;;+BAIgBA;;;eAAAA;;;gCAJe;AAIxB,SAASA,oBAAoBC,MAAc,EAAEC,OAA4B;IAC9E,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,mEAAmE;IACnE,MAAME,kBAAkB,AAACC,CAAAA,MAAMC,OAAO,CAACH,YAAYA,WAAW;QAACA;KAAS,AAAD,EAAGI,MAAM,CAACC;IAEjF,IAAIJ,gBAAgBK,MAAM,KAAK,GAAG;QAChC,+EAA+E;QAC/EL,gBAAgBM,IAAI,CAAC;IACvB;IAEA,8CAA8C;IAC9C,IAAIR,QAAQS,OAAO,EAAE;QACnBP,gBAAgBM,IAAI,CAAC;IACvB;IAEA,KAAK,MAAME,gBAAgBR,gBAAiB;QAC1C,MAAMS,mBAAmBC,IAAAA,8BAAc,EAACF,cAAcV;QACtDD,OAAOc,WAAW,CAACF;IACrB;IAEA,OAAOZ,OAAOe,SAAS;AACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/isRunningFromCI.ts"],"sourcesContent":["export const isRunningFromCI = process.env.NODE_ENV !== \"test\" && (!!process.env.CI || !!process.env.TF_BUILD);\n"],"names":["isRunningFromCI","process","env","NODE_ENV","CI","TF_BUILD"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,kBAAkBC,QAAQC,GAAG,CAACC,QAAQ,KAAK,UAAW,CAAA,CAAC,CAACF,QAAQC,GAAG,CAACE,EAAE,IAAI,CAAC,CAACH,QAAQC,GAAG,CAACG,QAAQ,AAAD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/parseServerOption.ts"],"sourcesContent":["export function parseServerOption(server: boolean | string | undefined) {\n const isBooleanAndTrue = typeof server === \"boolean\" && server;\n const isEmptyServer = typeof server === \"undefined\" || server === false;\n const serverString = isBooleanAndTrue ? \"localhost:5332\" : isEmptyServer ? \"localhost:5332\" : server;\n\n if (serverString.includes(\":\")) {\n const parts = serverString.split(\":\");\n\n const host = parts[0];\n const port = parseInt(parts[1] ?? \"5332\");\n return { host, port };\n } else if (serverString.length === 0) {\n return { host: \"localhost\", port: 5332 };\n } else {\n return { host: serverString, port: 5332 };\n }\n}\n"],"names":["parseServerOption","server","isBooleanAndTrue","isEmptyServer","serverString","includes","parts","split","host","port","parseInt","length"],"mappings":";;;;+BAAgBA;;;eAAAA;;;AAAT,SAASA,kBAAkBC,MAAoC;IACpE,MAAMC,mBAAmB,OAAOD,WAAW,aAAaA;IACxD,MAAME,gBAAgB,OAAOF,WAAW,eAAeA,WAAW;IAClE,MAAMG,eAAeF,mBAAmB,mBAAmBC,gBAAgB,mBAAmBF;IAE9F,IAAIG,aAAaC,QAAQ,CAAC,MAAM;QAC9B,MAAMC,QAAQF,aAAaG,KAAK,CAAC;QAEjC,MAAMC,OAAOF,KAAK,CAAC,EAAE;QACrB,MAAMG,OAAOC,SAASJ,KAAK,CAAC,EAAE,IAAI;QAClC,OAAO;YAAEE;YAAMC;QAAK;IACtB,OAAO,IAAIL,aAAaO,MAAM,KAAK,GAAG;QACpC,OAAO;YAAEH,MAAM;YAAaC,MAAM;QAAK;IACzC,OAAO;QACL,OAAO;YAAED,MAAMJ;YAAcK,MAAM;QAAK;IAC1C;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/run/action.ts"],"sourcesContent":["import { runAction } from \"./runAction.js\";\nimport { watchAction } from \"./watchAction.js\";\nimport type { Command } from \"commander\";\nimport type { ReporterInitOptions } from \"../../types/ReporterInitOptions.js\";\n\ninterface RunOptions extends ReporterInitOptions {\n concurrency: number;\n profile: string | boolean | undefined;\n dependencies: boolean;\n dependents: boolean;\n since: string;\n to: string[];\n scope: string[];\n skipLocalCache: boolean;\n continue: boolean;\n cache: boolean;\n resetCache: boolean;\n nodeArg: string;\n ignore: string[];\n watch: boolean;\n info: boolean;\n maxWorkersPerTask: string[];\n allowNoTargetRuns: boolean;\n}\n\nexport async function action(options: RunOptions, command: Command) {\n if (options.watch) {\n return watchAction(options, command);\n } else {\n return runAction(options, command);\n }\n}\n"],"names":["action","options","command","watch","watchAction","runAction"],"mappings":";;;;+BAyBsBA;;;eAAAA;;;2BAzBI;6BACE;AAwBrB,eAAeA,OAAOC,OAAmB,EAAEC,OAAgB;IAChE,IAAID,QAAQE,KAAK,EAAE;QACjB,OAAOC,IAAAA,wBAAW,EAACH,SAASC;IAC9B,OAAO;QACL,OAAOG,IAAAA,oBAAS,EAACJ,SAASC;IAC5B;AACF"}
|
|
@@ -15,7 +15,7 @@ interface CreateTargetGraphOptions {
|
|
|
15
15
|
tasks: string[];
|
|
16
16
|
packageInfos: PackageInfos;
|
|
17
17
|
}
|
|
18
|
-
export declare function createTargetGraph(options: CreateTargetGraphOptions): {
|
|
18
|
+
export declare function createTargetGraph(options: CreateTargetGraphOptions): Promise<{
|
|
19
19
|
targets: Map<string, import("@lage-run/target-graph").Target>;
|
|
20
|
-
}
|
|
20
|
+
}>;
|
|
21
21
|
export {};
|