@alfresco/adf-cli 8.5.0-24716296101 → 8.5.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.
@@ -55,9 +55,9 @@ const node_process_1 = require("node:process");
55
55
  const node_util_1 = require("node:util");
56
56
  const path = __importStar(require("path"));
57
57
  const fs = __importStar(require("fs"));
58
- const checker = __importStar(require("license-checker"));
59
58
  const licenseList = __importStar(require("spdx-license-list"));
60
59
  const ejs = __importStar(require("ejs"));
60
+ const { collectProductionLicenses } = require('../resources/license-collector.cjs');
61
61
  const nonStandardLicenses = {
62
62
  'public domain': 'PDDL-1.0',
63
63
  apache: 'Apache-2.0',
@@ -110,6 +110,15 @@ function getPackageFile(packagePath) {
110
110
  (0, node_process_1.exit)(1);
111
111
  }
112
112
  }
113
+ function toLinkedLicenseExpression(rawExpression) {
114
+ return rawExpression.replace(/\*/g, '').replace(/[a-zA-Z0-9\-.]+/g, (match) => {
115
+ const lowerMatch = match.toLowerCase();
116
+ if (lowerMatch !== 'and' && lowerMatch !== 'or' && lowerMatch !== 'with') {
117
+ return licenseWithMDLinks(match);
118
+ }
119
+ return match;
120
+ });
121
+ }
113
122
  /**
114
123
  * Licenses command
115
124
  *
@@ -165,63 +174,42 @@ Options:
165
174
  return new Promise((resolve, reject) => {
166
175
  // eslint-disable-next-line no-console
167
176
  console.info(`Checking ${packagePath}`);
168
- const packageJsonFile = getPackageFile(packagePath);
169
- const mainDependencies = Object.keys(packageJsonFile.dependencies || {});
170
- checker.init({
171
- start: workingDir,
172
- production: true,
173
- failOn: 'GPL'
174
- }, (err, packages) => {
175
- if (err) {
176
- console.error(err);
177
- reject(err);
177
+ const licenseScan = collectProductionLicenses(packagePath, {
178
+ denyList: ['GPL'],
179
+ missingRepositories
180
+ });
181
+ const filteredPackages = {};
182
+ for (const pack of licenseScan.packages) {
183
+ filteredPackages[pack.key] = {
184
+ name: pack.name,
185
+ version: pack.version,
186
+ licenseExp: toLinkedLicenseExpression(pack.rawLicenseExpression),
187
+ repository: pack.repository
188
+ };
189
+ }
190
+ if (licenseScan.deniedPackages.length > 0) {
191
+ const deniedError = new Error(`Denied licenses found:\n${licenseScan.deniedPackages.join('\n')}`);
192
+ console.error(deniedError.message);
193
+ reject(deniedError);
194
+ return;
195
+ }
196
+ const packageJson = getPackageFile(packagePath);
197
+ ejs.renderFile(templatePath, {
198
+ filteredPackages,
199
+ projVersion: packageJson.version,
200
+ projName: packageJson.name
201
+ }, {}, (ejsError, mdText) => {
202
+ if (ejsError) {
203
+ console.error(ejsError);
204
+ reject(ejsError);
178
205
  }
179
206
  else {
180
- const filteredPackages = {};
181
- // eslint-disable-next-line guard-for-in
182
- for (const packageName in packages) {
183
- const pack = packages[packageName];
184
- const lastAtSignPos = packageName.lastIndexOf('@');
185
- const basePackageName = packageName.substring(0, lastAtSignPos);
186
- if (mainDependencies.includes(basePackageName)) {
187
- pack['licenseExp'] = pack['licenses']
188
- .toString()
189
- .replace(/\*/g, '')
190
- .replace(/[a-zA-Z0-9\-.]+/g, (match) => {
191
- const lowerMatch = match.toLowerCase();
192
- if (lowerMatch !== 'and' && lowerMatch !== 'or' && lowerMatch !== 'with') {
193
- return licenseWithMDLinks(match);
194
- }
195
- else {
196
- return match;
197
- }
198
- });
199
- filteredPackages[packageName] = pack;
200
- }
201
- if (!pack['repository'] && missingRepositories[basePackageName]) {
202
- pack['repository'] = missingRepositories[basePackageName];
203
- filteredPackages[packageName] = pack;
204
- }
205
- }
206
- const packageJson = getPackageFile(packagePath);
207
- ejs.renderFile(templatePath, {
208
- filteredPackages,
209
- projVersion: packageJson.version,
210
- projName: packageJson.name
211
- }, {}, (ejsError, mdText) => {
212
- if (ejsError) {
213
- console.error(ejsError);
214
- reject(ejsError);
215
- }
216
- else {
217
- const outputPath = path.resolve(options.outDir || workingDir);
218
- const outputFile = path.join(outputPath, `license-info-${packageJson.version}.md`);
219
- fs.writeFileSync(outputFile, mdText);
220
- // eslint-disable-next-line no-console
221
- console.log(`Report saved as ${outputFile}`);
222
- resolve(0);
223
- }
224
- });
207
+ const outputPath = path.resolve(options.outDir || workingDir);
208
+ const outputFile = path.join(outputPath, `license-info-${packageJson.version}.md`);
209
+ fs.writeFileSync(outputFile, mdText);
210
+ // eslint-disable-next-line no-console
211
+ console.log(`Report saved as ${outputFile}`);
212
+ resolve(0);
225
213
  }
226
214
  });
227
215
  });
@@ -1 +1 @@
1
- {"version":3,"file":"licenses.js","sourceRoot":"","sources":["../../../../lib/cli/scripts/licenses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"licenses.js","sourceRoot":"","sources":["../../../../lib/cli/scripts/licenses.ts"],"names":[],"mappings":"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"}