#!/usr/bin/env node var path = require('path'); var fs = require('fs'); var checker = require('license-checker'); var spdxCodes = require('spdx-license-list'); var ejs = require('ejs'); var program = require('commander'); var templatePath = path.resolve(__dirname, 'templates', 'licensePage.ejs'); const nonStandardLicenses = { 'public domain': 'PDDL-1.0', 'apache': 'Apache-2.0', 'bsd': 'BSD-2-Clause' }; const missingRepos = { '@alfresco/adf-testing': 'https://github.com/Alfresco/alfresco-ng2-components', '@webassemblyjs/helper-api-error': 'https://github.com/xtuc/webassemblyjs', '@webassemblyjs/helper-fsm': 'https://github.com/xtuc/webassemblyjs', '@webassemblyjs/ieee754': 'https://github.com/xtuc/webassemblyjs', '@webassemblyjs/leb128': 'https://github.com/xtuc/webassemblyjs', 'adf-tslint-rules': 'https://github.com/Alfresco/alfresco-ng2-components', 'adf-monaco-extension': 'https://github.com/eromano/aca-monaco-extension', 'indexof': 'https://github.com/component/indexof', 'rxjs-compat': 'https://github.com/ReactiveX/rxjs/tree/master/compat', }; program .usage('') .parse(process.argv); var packageJson = JSON.parse(fs.readFileSync(path.resolve('./','package.json'))); if (!packageJson) { console.error('Move in the path where you have the package.json'); throw ''; } console.log(path.resolve('./','package.json')); checker.init({ start: './', production: true, failOn: 'GPL' }, function (err, packages) { if (err) { console.log(err); } else { for (var packageName in packages) { var pack = packages[packageName]; pack['licenseExp'] = pack['licenses'].toString() .replace(/\*/, '') .replace(/[a-zA-Z0-9\-\.]+/g, match => { var lowerMatch = match.toLowerCase(); if ((lowerMatch !== 'and') && (lowerMatch !== 'or') && (lowerMatch !== 'with')) { return licenseWithMDLinks(match); } else { return match; } }); if (!pack['repository']) { var lastAtSignPos = packageName.lastIndexOf('@'); var mainName = packageName.substring(0, lastAtSignPos); if (missingRepos[mainName]) { pack['repository'] = missingRepos[mainName]; } } } ejs.renderFile(templatePath, { packages: packages, projVersion: packageJson.version, projName: packageJson.description }, {}, (err, mdText) => { if (err) { console.log(err); } else { fs.writeFileSync(`license-info-${packageJson.version}.md`, mdText); console.log(`Wrote license`); } }); } }); function licenseWithMDLinks(licenseExp) { var licenseUrl = ''; if (spdxCodes[licenseExp] && spdxCodes[licenseExp]['url']) { licenseUrl = spdxCodes[licenseExp]['url']; } else { var substituteLicString = nonStandardLicenses[licenseExp.toLowerCase()]; if (spdxCodes[substituteLicString] && spdxCodes[substituteLicString]['url']) { licenseUrl = spdxCodes[substituteLicString]['url']; } } if (licenseUrl) { return `[${licenseExp}](${licenseUrl})`; } else { return licenseExp; } }