@unisphere/cli 1.59.0 → 2.0.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/package.json +2 -1
- package/src/lib/commands/how-to/command.js +30 -0
- package/src/lib/commands/how-to/command.js.map +1 -1
- package/src/lib/commands/licenses/command.d.ts +2 -0
- package/src/lib/commands/licenses/command.js +274 -0
- package/src/lib/commands/licenses/command.js.map +1 -0
- package/src/lib/commands/package/build-command.js +31 -0
- package/src/lib/commands/package/build-command.js.map +1 -1
- package/src/lib/commands/package/licenses/command.d.ts +2 -0
- package/src/lib/commands/package/licenses/command.js +12 -0
- package/src/lib/commands/package/licenses/command.js.map +1 -0
- package/src/lib/commands/package/licenses/extract-command.d.ts +2 -0
- package/src/lib/commands/package/licenses/extract-command.js +140 -0
- package/src/lib/commands/package/licenses/extract-command.js.map +1 -0
- package/src/lib/commands/package/package-commands.js +2 -0
- package/src/lib/commands/package/package-commands.js.map +1 -1
- package/src/lib/commands/runtime/build-command.js +39 -0
- package/src/lib/commands/runtime/build-command.js.map +1 -1
- package/src/lib/commands/runtime/command.js +2 -0
- package/src/lib/commands/runtime/command.js.map +1 -1
- package/src/lib/commands/runtime/licenses/command.d.ts +2 -0
- package/src/lib/commands/runtime/licenses/command.js +12 -0
- package/src/lib/commands/runtime/licenses/command.js.map +1 -0
- package/src/lib/commands/runtime/licenses/extract-command.d.ts +2 -0
- package/src/lib/commands/runtime/licenses/extract-command.js +119 -0
- package/src/lib/commands/runtime/licenses/extract-command.js.map +1 -0
- package/src/lib/utils/unisphere/get-dependency-graph.d.ts +4 -2
- package/src/lib/utils/unisphere/get-dependency-graph.js +85 -69
- package/src/lib/utils/unisphere/get-dependency-graph.js.map +1 -1
- package/src/lib/utils/unisphere/get-licenses.d.ts +26 -0
- package/src/lib/utils/unisphere/get-licenses.js +128 -0
- package/src/lib/utils/unisphere/get-licenses.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-command.js","sourceRoot":"","sources":["../../../../../../../../packages/unisphere-cli/src/lib/commands/package/licenses/extract-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,13 @@ exports.createPackageCommand = void 0;
|
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const command_1 = require("./publish/command");
|
|
6
6
|
const build_command_1 = require("./build-command");
|
|
7
|
+
const command_2 = require("./licenses/command");
|
|
7
8
|
const createPackageCommand = () => {
|
|
8
9
|
const packageCommand = new commander_1.Command('package');
|
|
9
10
|
packageCommand.description('manage Unisphere package in the current project');
|
|
10
11
|
(0, build_command_1.createBuildCommand)(packageCommand);
|
|
11
12
|
(0, command_1.createPublishCommand)(packageCommand);
|
|
13
|
+
(0, command_2.createLicensesCommand)(packageCommand);
|
|
12
14
|
return packageCommand;
|
|
13
15
|
};
|
|
14
16
|
exports.createPackageCommand = createPackageCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-commands.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/package/package-commands.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,+CAAyD;AACzD,mDAAqD;
|
|
1
|
+
{"version":3,"file":"package-commands.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/package/package-commands.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,+CAAyD;AACzD,mDAAqD;AACrD,gDAA2D;AAGpD,MAAM,oBAAoB,GAAG,GAAY,EAAE;IAChD,MAAM,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC,CAAC;IAE9C,cAAc,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;IAE9E,IAAA,kCAAkB,EAAC,cAAc,CAAC,CAAC;IACnC,IAAA,8BAAoB,EAAC,cAAc,CAAC,CAAC;IACrC,IAAA,+BAAqB,EAAC,cAAc,CAAC,CAAC;IACtC,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B"}
|
|
@@ -5,10 +5,13 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const commander_1 = require("commander");
|
|
6
6
|
const debug_1 = require("debug");
|
|
7
7
|
const listr2_1 = require("listr2");
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const path = require("path");
|
|
8
10
|
const utils_1 = require("../../utils/utils");
|
|
9
11
|
const workspace_1 = require("../../utils/unisphere/workspace");
|
|
10
12
|
const build_unisphere_elements_1 = require("../../utils/unisphere/build-unisphere-elements");
|
|
11
13
|
const defaults_1 = require("../../utils/listr2/defaults");
|
|
14
|
+
const get_licenses_1 = require("../../utils/unisphere/get-licenses");
|
|
12
15
|
const debug = (0, debug_1.default)('unisphere:runtime:build');
|
|
13
16
|
const createBuildCommand = (parentCommand) => {
|
|
14
17
|
const command = parentCommand.command('build');
|
|
@@ -21,6 +24,7 @@ const createBuildCommand = (parentCommand) => {
|
|
|
21
24
|
.addArgument(new commander_1.Argument('runtime', 'the runtime to build'))
|
|
22
25
|
.option('--cwd <name>', 'the working directory')
|
|
23
26
|
.option('--production', 'build in production mode', false)
|
|
27
|
+
.option('--licenses', 'extract license information after build', false)
|
|
24
28
|
.addOption(noLintOption)
|
|
25
29
|
.hook('preAction', utils_1.printVerboseHook)
|
|
26
30
|
.action((runtime, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -61,6 +65,41 @@ const createBuildCommand = (parentCommand) => {
|
|
|
61
65
|
});
|
|
62
66
|
},
|
|
63
67
|
},
|
|
68
|
+
{
|
|
69
|
+
title: 'Extracting license information',
|
|
70
|
+
skip: () => !options.licenses,
|
|
71
|
+
task: (ctx, task) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
72
|
+
const runtimeConfig = runtime === 'loader'
|
|
73
|
+
? ctx.workspace.config.elements.loader
|
|
74
|
+
: runtime === 'workspace'
|
|
75
|
+
? ctx.workspace.config.elements.workspace
|
|
76
|
+
: ctx.workspace.config.elements.runtimes[runtime];
|
|
77
|
+
if (!runtimeConfig) {
|
|
78
|
+
throw new Error(`No config found for runtime ${runtime}`);
|
|
79
|
+
}
|
|
80
|
+
const runtimePath = runtimeConfig.projectPath;
|
|
81
|
+
task.output = `Scanning dependencies...`;
|
|
82
|
+
const result = yield (0, get_licenses_1.getLicenses)(cwd, runtimePath, {
|
|
83
|
+
includeTransitive: true,
|
|
84
|
+
});
|
|
85
|
+
const { licenses, missingLicenses } = result;
|
|
86
|
+
// Check for missing licenses and fail the build
|
|
87
|
+
if (missingLicenses.length > 0) {
|
|
88
|
+
const missingList = missingLicenses
|
|
89
|
+
.map(l => ` - ${l.packageName}@${l.version}`)
|
|
90
|
+
.join('\n');
|
|
91
|
+
const errorMessage = `Build failed: Found ${missingLicenses.length} package(s) without license information:\n\n${missingList}\n\nTo see full license details, run:\n npx unisphere runtime licenses extract ${runtime} --include-transitive`;
|
|
92
|
+
throw new Error(errorMessage);
|
|
93
|
+
}
|
|
94
|
+
// Save to dist folder
|
|
95
|
+
const distPath = path.join(cwd, 'dist', 'unisphere', 'runtimes', runtime);
|
|
96
|
+
// Create dist directory if it doesn't exist
|
|
97
|
+
fs.mkdirSync(distPath, { recursive: true });
|
|
98
|
+
const licensesPath = path.join(distPath, 'licenses.json');
|
|
99
|
+
fs.writeFileSync(licensesPath, (0, get_licenses_1.formatLicensesAsJson)(licenses), 'utf8');
|
|
100
|
+
task.title = `Extracted licenses for ${licenses.length} dependencies to ${path.relative(cwd, licensesPath)}`;
|
|
101
|
+
}),
|
|
102
|
+
},
|
|
64
103
|
], (0, defaults_1.getDefaultListrOptions)());
|
|
65
104
|
yield task.run();
|
|
66
105
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/build-command.ts"],"names":[],"mappings":";;;;AAAA,yCAAsD;AACtD,iCAA0B;AAC1B,mCAA+B;
|
|
1
|
+
{"version":3,"file":"build-command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/build-command.ts"],"names":[],"mappings":";;;;AAAA,yCAAsD;AACtD,iCAA0B;AAC1B,mCAA+B;AAC/B,yBAAyB;AACzB,6BAA6B;AAE7B,6CAAqD;AACrD,+DAAwE;AACxE,6FAAwG;AACxG,0DAAqE;AAErE,qEAAuF;AAEvF,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,yBAAyB,CAAC,CAAC;AAExC,MAAM,kBAAkB,GAAG,CAAC,aAAsB,EAAW,EAAE;IACpE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,IAAI,kBAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC7D,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IAClC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAE3B,OAAO;SACJ,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,CAAC;SAC/C,WAAW,CAAC,IAAI,oBAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;SAC5D,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC;SAC/C,MAAM,CAAC,cAAc,EAAE,0BAA0B,EAAE,KAAK,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,yCAAyC,EAAE,KAAK,CAAC;SACtE,SAAS,CAAC,YAAY,CAAC;SACvB,IAAI,CAAC,WAAW,EAAE,wBAAgB,CAAC;SACnC,MAAM,CAAC,CAAO,OAAO,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAEzC,MAAM,IAAI,GAAG,IAAI,cAAK,CACpB;YACE;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,IAAI,EAAE,CAAO,GAAG,EAAE,EAAE;oBAClB,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAqB,EAAC,GAAG,EAAE;wBACjD,gBAAgB,EAAE,IAAI;qBACvB,CAAC,CAAC;oBAEH,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;wBAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;oBAC/D,CAAC;oBAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC5B,CAAC,CAAA;aACF;YACD;gBACE,KAAK,EAAE,oBAAoB,OAAO,EAAE;gBACpC,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;;oBAClB,MAAM,oBAAoB,GACxB,OAAO,KAAK,QAAQ;wBAClB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa;wBACpD,CAAC,CAAC,OAAO,KAAK,WAAW;4BACvB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa;4BACvD,CAAC,CAAC,MAAA,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAC7C,aAAa,CAAC;oBAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,EAAE,CAClD,CAAC;oBACJ,CAAC;oBAED,OAAO,IAAA,iEAAsC,EAAC;wBAC5C,GAAG;wBACH,aAAa,EAAE,oBAAoB;wBACnC,UAAU,EAAE,IAAI;wBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;wBAC9B,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,IAAI;wBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;qBACzB,CAAC,CAAC;gBACL,CAAC;aACF;YACD;gBACE,KAAK,EAAE,gCAAgC;gBACvC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;gBAC7B,IAAI,EAAE,CAAO,GAAG,EAAE,IAAI,EAAE,EAAE;oBACxB,MAAM,aAAa,GACjB,OAAO,KAAK,QAAQ;wBAClB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;wBACtC,CAAC,CAAC,OAAO,KAAK,WAAW;4BACvB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS;4BACzC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAExD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBAED,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;oBAE9C,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC;oBAEzC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAW,EAAC,GAAG,EAAE,WAAW,EAAE;wBACjD,iBAAiB,EAAE,IAAI;qBACxB,CAAC,CAAC;oBAEH,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;oBAE7C,gDAAgD;oBAChD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,WAAW,GAAG,eAAe;6BAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;6BAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEd,MAAM,YAAY,GAAG,uBAAuB,eAAe,CAAC,MAAM,+CAA+C,WAAW,mFAAmF,OAAO,uBAAuB,CAAC;wBAE9O,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;oBAChC,CAAC;oBAED,sBAAsB;oBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBAE1E,4CAA4C;oBAC5C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;oBAE1D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAA,mCAAoB,EAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;oBAEvE,IAAI,CAAC,KAAK,GAAG,0BAA0B,QAAQ,CAAC,MAAM,oBAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC/G,CAAC,CAAA;aACF;SACF,EACD,IAAA,iCAAsB,GAAE,CACzB,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC,CAAA,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAxHW,QAAA,kBAAkB,sBAwH7B"}
|
|
@@ -5,12 +5,14 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const command_1 = require("./publish/command");
|
|
6
6
|
const build_command_1 = require("./build-command");
|
|
7
7
|
const serve_command_1 = require("./serve-command");
|
|
8
|
+
const command_2 = require("./licenses/command");
|
|
8
9
|
const createRuntimeCommand = () => {
|
|
9
10
|
const runtimeCommand = new commander_1.Command('runtime');
|
|
10
11
|
runtimeCommand.description('manage Unisphere runtime in the current project');
|
|
11
12
|
(0, build_command_1.createBuildCommand)(runtimeCommand);
|
|
12
13
|
(0, command_1.createPublishCommand)(runtimeCommand);
|
|
13
14
|
(0, serve_command_1.createServeCommand)(runtimeCommand);
|
|
15
|
+
(0, command_2.createLicensesCommand)(runtimeCommand);
|
|
14
16
|
return runtimeCommand;
|
|
15
17
|
};
|
|
16
18
|
exports.createRuntimeCommand = createRuntimeCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/command.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,+CAAyD;AACzD,mDAAqD;AACrD,mDAAqD;
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/command.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,+CAAyD;AACzD,mDAAqD;AACrD,mDAAqD;AACrD,gDAA2D;AAEpD,MAAM,oBAAoB,GAAG,GAAY,EAAE;IAChD,MAAM,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,cAAc,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;IAE9E,IAAA,kCAAkB,EAAC,cAAc,CAAC,CAAC;IACnC,IAAA,8BAAoB,EAAC,cAAc,CAAC,CAAC;IACrC,IAAA,kCAAkB,EAAC,cAAc,CAAC,CAAC;IACnC,IAAA,+BAAqB,EAAC,cAAc,CAAC,CAAC;IACtC,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLicensesCommand = void 0;
|
|
4
|
+
const extract_command_1 = require("./extract-command");
|
|
5
|
+
const createLicensesCommand = (parentCommand) => {
|
|
6
|
+
const licensesCommand = parentCommand.command('licenses');
|
|
7
|
+
licensesCommand.description('manage licenses for Unisphere runtime dependencies');
|
|
8
|
+
(0, extract_command_1.createExtractCommand)(licensesCommand);
|
|
9
|
+
return licensesCommand;
|
|
10
|
+
};
|
|
11
|
+
exports.createLicensesCommand = createLicensesCommand;
|
|
12
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/licenses/command.ts"],"names":[],"mappings":";;;AACA,uDAAyD;AAElD,MAAM,qBAAqB,GAAG,CAAC,aAAsB,EAAW,EAAE;IACvE,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE1D,eAAe,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;IAElF,IAAA,sCAAoB,EAAC,eAAe,CAAC,CAAC;IAEtC,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createExtractCommand = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const debug_1 = require("debug");
|
|
7
|
+
const listr2_1 = require("listr2");
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const path = require("path");
|
|
10
|
+
const utils_1 = require("../../../utils/utils");
|
|
11
|
+
const workspace_1 = require("../../../utils/unisphere/workspace");
|
|
12
|
+
const defaults_1 = require("../../../utils/listr2/defaults");
|
|
13
|
+
const get_licenses_1 = require("../../../utils/unisphere/get-licenses");
|
|
14
|
+
const debug = (0, debug_1.default)('unisphere:cli:licenses:extract');
|
|
15
|
+
const createExtractCommand = (parentCommand) => {
|
|
16
|
+
const command = parentCommand.command('extract');
|
|
17
|
+
command
|
|
18
|
+
.description('extract license information for runtime dependencies')
|
|
19
|
+
.option('--verbose', 'output debug logs', false)
|
|
20
|
+
.option('--allowed-licenses <licenses>', 'allowed licenses', '')
|
|
21
|
+
.option('--build', 'build the runtime before extracting licenses', false)
|
|
22
|
+
.addArgument(new commander_1.Argument('runtime', 'the runtime to extract licenses for'))
|
|
23
|
+
.option('--cwd <name>', 'the working directory')
|
|
24
|
+
.option('--include-transitive', 'include transitive dependencies (default: false)', false)
|
|
25
|
+
.addOption(new commander_1.Option('--format <type>', 'output format')
|
|
26
|
+
.choices(['json', 'summary'])
|
|
27
|
+
.default('summary'))
|
|
28
|
+
.option('--output <path>', 'output directory (relative path to workspace root)')
|
|
29
|
+
.hook('preAction', utils_1.printVerboseHook)
|
|
30
|
+
.action((runtimeName, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
const cwd = options.cwd || process.cwd();
|
|
32
|
+
const task = new listr2_1.Listr([
|
|
33
|
+
{
|
|
34
|
+
title: 'Getting workspace',
|
|
35
|
+
task: (ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const workspace = yield (0, workspace_1.getUnisphereWorkspace)(cwd, {
|
|
37
|
+
suspendRecursion: true,
|
|
38
|
+
});
|
|
39
|
+
if (!workspace) {
|
|
40
|
+
debug(`No .unisphere file found in the directory ${cwd}`);
|
|
41
|
+
throw new Error(`No .unisphere file found in the directory`);
|
|
42
|
+
}
|
|
43
|
+
ctx.workspace = workspace;
|
|
44
|
+
}),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: `Checking runtime existence`,
|
|
48
|
+
task: (ctx, task) => {
|
|
49
|
+
if (!ctx.workspace.config.elements.runtimes[runtimeName]) {
|
|
50
|
+
task.title = `Checking runtime existence - Runtime not found`;
|
|
51
|
+
throw new Error(`Runtime name: ${runtimeName} not found (did you provide the correct name? run npx unisphere info to list all runtimes)`);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: `Extracting licenses for runtime ${runtimeName}`,
|
|
57
|
+
task: (ctx, task) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
const runtimeConfig = ctx.workspace.config.elements.runtimes[runtimeName];
|
|
59
|
+
const runtimePath = runtimeConfig.projectPath;
|
|
60
|
+
task.output = `Scanning dependencies...`;
|
|
61
|
+
const { licenses, missingLicenses } = yield (0, get_licenses_1.getLicenses)(cwd, runtimePath, {
|
|
62
|
+
includeTransitive: options.includeTransitive,
|
|
63
|
+
});
|
|
64
|
+
ctx.licenses = licenses;
|
|
65
|
+
const scope = options.includeTransitive ? 'direct and transitive' : 'direct';
|
|
66
|
+
const missingMsg = missingLicenses.length > 0
|
|
67
|
+
? ` (${missingLicenses.length} without license)`
|
|
68
|
+
: '';
|
|
69
|
+
task.title = `Extracted licenses for ${licenses.length} ${scope} dependencies${missingMsg}`;
|
|
70
|
+
}),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
title: 'Saving results',
|
|
74
|
+
skip: () => !options.output,
|
|
75
|
+
task: (ctx, task) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
76
|
+
const outputPath = path.resolve(cwd, options.output);
|
|
77
|
+
// Create output directory if it doesn't exist
|
|
78
|
+
fs.mkdirSync(outputPath, { recursive: true });
|
|
79
|
+
const format = options.format;
|
|
80
|
+
const savedFiles = [];
|
|
81
|
+
// Save single format
|
|
82
|
+
const extension = format === 'json' ? 'json' : 'txt';
|
|
83
|
+
const filename = `licenses-${runtimeName}.${extension}`;
|
|
84
|
+
const filePath = path.join(outputPath, filename);
|
|
85
|
+
let content;
|
|
86
|
+
if (format === 'json') {
|
|
87
|
+
content = (0, get_licenses_1.formatLicensesAsJson)(ctx.licenses);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
content = (0, get_licenses_1.formatLicensesAsSummary)(ctx.licenses);
|
|
91
|
+
}
|
|
92
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
93
|
+
task.title = `Saved results to ${path.relative(cwd, filePath)}`;
|
|
94
|
+
}),
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
title: 'Displaying results',
|
|
98
|
+
skip: () => !!options.output,
|
|
99
|
+
task: (ctx, task) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
const format = options.format;
|
|
101
|
+
let content;
|
|
102
|
+
if (format === 'json') {
|
|
103
|
+
content = (0, get_licenses_1.formatLicensesAsJson)(ctx.licenses);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
content = (0, get_licenses_1.formatLicensesAsSummary)(ctx.licenses);
|
|
107
|
+
}
|
|
108
|
+
// Output to console
|
|
109
|
+
console.log('\n' + content);
|
|
110
|
+
task.title = 'Results displayed';
|
|
111
|
+
}),
|
|
112
|
+
},
|
|
113
|
+
], (0, defaults_1.getDefaultListrOptions)());
|
|
114
|
+
yield task.run();
|
|
115
|
+
}));
|
|
116
|
+
return command;
|
|
117
|
+
};
|
|
118
|
+
exports.createExtractCommand = createExtractCommand;
|
|
119
|
+
//# sourceMappingURL=extract-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-command.js","sourceRoot":"","sources":["../../../../../../../../packages/unisphere-cli/src/lib/commands/runtime/licenses/extract-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export declare function getDependencyGraphAndFilteredDeps(rootDir: string, packageDir: string, patterns?: any[]
|
|
1
|
+
export declare function getDependencyGraphAndFilteredDeps(rootDir: string, packageDir: string, patterns?: any[], options?: {
|
|
2
|
+
includeTransitive?: boolean;
|
|
3
|
+
}): Promise<{
|
|
2
4
|
graph: Record<string, {
|
|
3
5
|
name: string;
|
|
4
6
|
version: string;
|
|
@@ -7,4 +9,4 @@ export declare function getDependencyGraphAndFilteredDeps(rootDir: string, packa
|
|
|
7
9
|
devDependencies: Record<string, string>;
|
|
8
10
|
}>;
|
|
9
11
|
notAllowed: string[];
|
|
10
|
-
}
|
|
12
|
+
}>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDependencyGraphAndFilteredDeps = getDependencyGraphAndFilteredDeps;
|
|
4
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const debug_1 = require("debug");
|
|
7
|
+
const devkit_1 = require("@nrwl/devkit");
|
|
7
8
|
const debug = (0, debug_1.default)('unisphere:utils:get-dependency-graph');
|
|
8
9
|
function matchesPattern(packageName, pattern) {
|
|
9
10
|
// Convert glob-like pattern to regex
|
|
@@ -16,78 +17,93 @@ function matchesPattern(packageName, pattern) {
|
|
|
16
17
|
const regex = new RegExp(`^${regexPattern}$`);
|
|
17
18
|
return regex.test(packageName);
|
|
18
19
|
}
|
|
19
|
-
function getDependencyGraphAndFilteredDeps(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (!fs.existsSync(packageJsonPath)) {
|
|
34
|
-
return null;
|
|
20
|
+
function getDependencyGraphAndFilteredDeps(rootDir_1, packageDir_1) {
|
|
21
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (rootDir, packageDir, patterns = [], options = {}) {
|
|
22
|
+
const { includeTransitive = true } = options; // Default to true for backward compatibility
|
|
23
|
+
const packagePath = path.resolve(rootDir, packageDir);
|
|
24
|
+
debug('get dependency graph for %s', packagePath);
|
|
25
|
+
// Get the Nx project graph
|
|
26
|
+
const projectGraph = yield (0, devkit_1.createProjectGraphAsync)();
|
|
27
|
+
// Find the project name from the package directory
|
|
28
|
+
const projectName = Object.keys(projectGraph.nodes).find(name => {
|
|
29
|
+
const node = projectGraph.nodes[name];
|
|
30
|
+
return node.data.root === packageDir || path.resolve(rootDir, node.data.root) === packagePath;
|
|
31
|
+
});
|
|
32
|
+
if (!projectName) {
|
|
33
|
+
throw new Error(`Project not found for path ${packagePath}`);
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
35
|
+
debug('Found project: %s', projectName);
|
|
36
|
+
const graph = {};
|
|
37
|
+
function traverse(currentProjectName, directDependencyName = null, visited = new Set()) {
|
|
38
|
+
if (visited.has(currentProjectName)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
visited.add(currentProjectName);
|
|
42
|
+
const node = projectGraph.nodes[currentProjectName];
|
|
43
|
+
if (!node) {
|
|
44
|
+
debug('Project not found in graph: %s', currentProjectName);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
debug('extracting dependencies for %s', currentProjectName);
|
|
48
|
+
// Get project metadata
|
|
49
|
+
const version = node.data.version || '0.0.0';
|
|
50
|
+
const key = `${currentProjectName}@${version}`;
|
|
51
|
+
const resolvedDirectDependencyName = directDependencyName || key;
|
|
52
|
+
if (graph[key]) {
|
|
53
|
+
if (directDependencyName && !graph[key].directDependenciesName.includes(directDependencyName)) {
|
|
54
|
+
graph[key].directDependenciesName.push(directDependencyName);
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Get dependencies from the project graph
|
|
59
|
+
const dependencies = [];
|
|
60
|
+
const projectDeps = projectGraph.dependencies[currentProjectName] || [];
|
|
61
|
+
projectDeps.forEach(dep => {
|
|
62
|
+
if (dep.target) {
|
|
63
|
+
dependencies.push(dep.target);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
graph[key] = {
|
|
67
|
+
name: currentProjectName,
|
|
68
|
+
version,
|
|
69
|
+
dependencies,
|
|
70
|
+
peerDependencies: {},
|
|
71
|
+
devDependencies: {},
|
|
72
|
+
directDependenciesName: directDependencyName ? [resolvedDirectDependencyName] : []
|
|
73
|
+
};
|
|
74
|
+
// Build dependency graph recursively
|
|
75
|
+
if (includeTransitive) {
|
|
76
|
+
dependencies.forEach(dep => {
|
|
77
|
+
traverse(dep, resolvedDirectDependencyName, visited);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
57
80
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const key = `${name}@${version}`;
|
|
74
|
-
const isForbidden = patterns.some((p) => matchesPattern(name, p));
|
|
75
|
-
if (isForbidden) {
|
|
76
|
-
const directDep = dependencyChains.get(key);
|
|
77
|
-
if (!forbiddenByDirectDep.has(directDep)) {
|
|
78
|
-
forbiddenByDirectDep.set(directDep, []);
|
|
81
|
+
// Build dependency graph starting from the target project
|
|
82
|
+
traverse(projectName);
|
|
83
|
+
debug('looking for patterns: %s', patterns.join(', '));
|
|
84
|
+
// Find forbidden dependencies and group by direct dependency
|
|
85
|
+
const forbiddenByDirectDep = new Map();
|
|
86
|
+
Object.values(graph).forEach(({ name, version, directDependenciesName }) => {
|
|
87
|
+
const key = `${name}@${version}`;
|
|
88
|
+
const isForbidden = patterns.some((p) => matchesPattern(name, p));
|
|
89
|
+
if (isForbidden) {
|
|
90
|
+
directDependenciesName.forEach((directDependencyName) => {
|
|
91
|
+
if (!forbiddenByDirectDep.has(directDependencyName)) {
|
|
92
|
+
forbiddenByDirectDep.set(directDependencyName, []);
|
|
93
|
+
}
|
|
94
|
+
forbiddenByDirectDep.get(directDependencyName).push(`${name}@${version}`);
|
|
95
|
+
});
|
|
79
96
|
}
|
|
80
|
-
|
|
97
|
+
});
|
|
98
|
+
// Format the result as grouped strings
|
|
99
|
+
const notAllowed = [];
|
|
100
|
+
for (const [directDep, forbidden] of forbiddenByDirectDep.entries()) {
|
|
101
|
+
const forbiddenList = forbidden.sort().join(', ');
|
|
102
|
+
notAllowed.push(`${directDep} -> [${forbiddenList}]`);
|
|
81
103
|
}
|
|
104
|
+
notAllowed.sort();
|
|
105
|
+
debug('not allowed dependencies grouped by direct dependency: %s', notAllowed.join('; '));
|
|
106
|
+
return { graph, notAllowed };
|
|
82
107
|
});
|
|
83
|
-
// Format the result as grouped strings
|
|
84
|
-
const notAllowed = [];
|
|
85
|
-
for (const [directDep, forbidden] of forbiddenByDirectDep.entries()) {
|
|
86
|
-
const forbiddenList = forbidden.sort().join(', ');
|
|
87
|
-
notAllowed.push(`${directDep} -> [${forbiddenList}]`);
|
|
88
|
-
}
|
|
89
|
-
notAllowed.sort();
|
|
90
|
-
debug('not allowed dependencies grouped by direct dependency: %s', notAllowed.join('; '));
|
|
91
|
-
return { graph, notAllowed };
|
|
92
108
|
}
|
|
93
109
|
//# sourceMappingURL=get-dependency-graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-dependency-graph.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/utils/unisphere/get-dependency-graph.ts"],"names":[],"mappings":";;AAmBA,
|
|
1
|
+
{"version":3,"file":"get-dependency-graph.js","sourceRoot":"","sources":["../../../../../../../packages/unisphere-cli/src/lib/utils/unisphere/get-dependency-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface LicenseInfo {
|
|
2
|
+
packageName: string;
|
|
3
|
+
version: string;
|
|
4
|
+
license: string;
|
|
5
|
+
repository?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface LicenseExtractionOptions {
|
|
8
|
+
includeTransitive?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface LicenseExtractionResult {
|
|
11
|
+
licenses: LicenseInfo[];
|
|
12
|
+
missingLicenses: LicenseInfo[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get licenses for all dependencies of a package
|
|
16
|
+
* Reuses the existing dependency graph extraction logic
|
|
17
|
+
*/
|
|
18
|
+
export declare function getLicenses(rootDir: string, packageDir: string, options?: LicenseExtractionOptions): Promise<LicenseExtractionResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Format licenses as JSON
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatLicensesAsJson(licenses: LicenseInfo[]): string;
|
|
23
|
+
/**
|
|
24
|
+
* Format licenses as summary text
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatLicensesAsSummary(licenses: LicenseInfo[]): string;
|