From 37bb07854776132978f5bc01a33b94044f724405 Mon Sep 17 00:00:00 2001 From: Johannes Marbach Date: Sat, 27 Mar 2021 14:11:19 +0100 Subject: [PATCH] Add license comments to make GNU LibreJS accept Hydrogen's JS This adds proper license comments to all _internal_ JS scripts in the /target build. This way the code self-identifies as Apache-2.0 which prevents LibreJS from blocking it. Closes: #209 Signed-off-by: Johannes Marbach --- scripts/build.mjs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/scripts/build.mjs b/scripts/build.mjs index 44d58fe6..196036d4 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -161,13 +161,15 @@ async function buildHtml(doc, version, baseConfig, globalHash, modernOnly, asset wasmBundle: assets.resolve("olm.js"), } })); + const modernScript = `import {main, Platform} from "./${assets.resolve(`hydrogen.js`)}"; main(new Platform(document.body, ${configJSON}));`; const mainScripts = [ - `` + `` ]; if (!modernOnly) { + const legacyScript = `hydrogen.main(new hydrogen.Platform(document.body, ${configJSON}));`; mainScripts.push( ``, - `` + `` ); } doc("script#main").replaceWith(mainScripts.join("")); @@ -177,7 +179,7 @@ async function buildHtml(doc, version, baseConfig, globalHash, modernOnly, asset let vSource = versionScript.contents().text(); vSource = vSource.replace(`"%%VERSION%%"`, `"${version}"`); vSource = vSource.replace(`"%%GLOBAL_HASH%%"`, `"${globalHash}"`); - versionScript.text(vSource); + versionScript.text(wrapWithLicenseComments(vSource)); doc("head").append(``); await assets.writeUnhashed("index.html", doc.html()); } @@ -198,7 +200,7 @@ async function buildJs(mainFile, extraFiles, importOverrides) { name: `hydrogen` }); const code = output[0].code; - return code; + return wrapWithLicenseComments(code); } async function buildJsLegacy(mainFile, extraFiles, importOverrides) { @@ -240,7 +242,14 @@ async function buildJsLegacy(mainFile, extraFiles, importOverrides) { name: `hydrogen` }); const code = output[0].code; - return code; + return wrapWithLicenseComments(code); +} + +function wrapWithLicenseComments(code) { + // Add proper license comments to make GNU LibreJS accept the file + const start = '// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0'; + const end = '// @license-end'; + return `${start}\n${code}\n${end}`; } const NON_PRECACHED_JS = [