From f73bfa99158888b700e8e0c2b51f830a12afd8a3 Mon Sep 17 00:00:00 2001 From: Gilgamesh Athoraya Date: Tue, 17 Jan 2023 11:09:00 +0100 Subject: [PATCH] Refactor third party notice --- generate-licenses.js | 98 ++++++++++++++++++-------------------------- mk | 2 +- 2 files changed, 42 insertions(+), 58 deletions(-) diff --git a/generate-licenses.js b/generate-licenses.js index b9392de0..625e3aed 100644 --- a/generate-licenses.js +++ b/generate-licenses.js @@ -2,70 +2,54 @@ const generateLicenses = function generateLicenses(file) { const checker = require('license-checker'); const fs = require('fs'); const path = require('path'); - checker.init( - { - start: ".", - production: true, - excludePrivatePackages: true, - }, - function (err, json) { - if (err) { - console.log(err); //Handle error - } else { - copyLicenseToText(json); //The sorted json data - } + function isMarkDown(filepath) { + const filename = path.basename(filepath).toUpperCase(); + return filename === 'README.MD' || filename === 'README.MARKDOWN'; + } + function copyLicense(item) { + if (item.licenseFile && !isMarkDown(item.licenseFile)) { + const licenseFile = fs.readFileSync(`${item.licenseFile}`, 'utf8'); + fs.appendFileSync(file, `\n\n${item.module} (${item.repository})\n`); + fs.appendFileSync(file, '=========================================\n'); + fs.appendFileSync(file, licenseFile); } - ); + } + function printLicenseDetails(licenses) { + fs.appendFileSync(file, 'THIRD-PARTY SOFTWARE NOTICES AND INFORMATION\n\n'); + fs.appendFileSync(file, 'This project incorporates components from the projects listed below.\n'); + Object.keys(licenses).forEach((key) => { + licenses[key].forEach(copyLicense); + }); + } function copyLicenseToText(json) { const licenses = Object.keys(json).map((key) => { - let obj = json[key]; + const obj = json[key]; obj.module = key; return obj; }) - .filter(item => !isMarkDown(item.licenseFile)) - .reduce( - (r, v) => ((r[v.licenses] || (r[v.licenses] = [])).push(v), r), - {} - ); - printLicenseSummary(licenses); + .filter((item) => !isMarkDown(item.licenseFile)) + .reduce( + (r, v) => { + (r[v.licenses] || (r[v.licenses] = [])).push(v); + return r; + }, + {}, + ); printLicenseDetails(licenses); } - function printLicenseSummary(licenses) { - Object.keys(licenses).forEach((key) => { - const items = licenses[key]; - fs.appendFileSync(file, "\n\n-------------------\n"); - fs.appendFileSync(file, `${key} - License Summary\n`); - fs.appendFileSync(file, "--------------------\n\n"); - items.forEach(item => { - fs.appendFileSync(file, `${item.module}\n`); - }); - }); - } - function printLicenseDetails(licenses) { - Object.keys(licenses).forEach(function (key) { - const items = licenses[key]; - fs.appendFileSync(file, "\n\n----------------------\n"); - fs.appendFileSync(file, `${key} - License Details \n`); - fs.appendFileSync(file, "------------------------\n\n"); - items.forEach(copyLicense); - }); - } - function copyLicense(item) { - try { - if (item.licenseFile && !isMarkDown(item.licenseFile)) { - const licenseFile = fs.readFileSync(`${item.licenseFile}`, "utf8"); - fs.appendFileSync(file, "\n\n----------------------\n"); - fs.appendFileSync(file, `${item.module} - ${item.licenses}\n`); - fs.appendFileSync(file, "-----------------------\n\n"); - fs.appendFileSync(file, licenseFile); + checker.init( + { + start: '.', + production: true, + excludePrivatePackages: true, + }, + (err, json) => { + if (err) { + throw err; + } else { + copyLicenseToText(json); // The sorted json data } - } catch (err) { - console.error(err); - } - } - function isMarkDown(filepath) { - const filename = path.basename(filepath).toUpperCase(); - return filename == "README.MD" || filename == "README.MARKDOWN"; - } + }, + ); }; -module.exports.generateLicenses = generateLicenses; \ No newline at end of file +module.exports.generateLicenses = generateLicenses; diff --git a/mk b/mk index 74771d8a..a79335c2 100755 --- a/mk +++ b/mk @@ -82,7 +82,7 @@ const pkg = (x, y, f) => { const d = `_/${pj.name}/${pj.productName}-${x}-${y}`; rm(`${d}/version`); fs.existsSync(`${d}/LICENSE`) && mv(`${d}/LICENSE`, `${d}/LICENSE.electron`); - generateLicenses(`${d}/LICENSES.node.txt`); + generateLicenses(`${d}/ThirdPartyNotices.txt`); f(); }, e => f(e)); };