From b58cea7c41279ccbe0be1407348388867dc583fe Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 18 Jan 2023 13:05:49 +1100 Subject: Script to add license preamble to each file. Also, does that. (#935) * Add script to automatically add license to each file * Add license preamble to each file. * Fix existing preamble detection breaking due to line endings. Git :( * Prevent license from being added to code with other licenses --- scripts/license.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 scripts/license.js (limited to 'scripts/license.js') diff --git a/scripts/license.js b/scripts/license.js new file mode 100644 index 00000000..31321cd1 --- /dev/null +++ b/scripts/license.js @@ -0,0 +1,60 @@ +/* + Automatically appends our license preamble to each source file. + Does not prepend if preamble already exists. + Does not replace if change in util/licensePreamble.txt was made. + Does not prepend is file contains @fc-license-skip +*/ + +const Path = require("path"); +const fs = require("fs"); +const walk = require("./util/walk"); + +const FOSSCORD_SOURCE_DIR = Path.join(__dirname, "..", "src"); +const FOSSCORD_SCRIPTS_DIR = Path.join(__dirname); +const FOSSCORD_LICENSE_PREAMBLE = fs + .readFileSync(Path.join(__dirname, "util", "licensePreamble.txt")) + .toString() + .split("\r") // remove windows bs + .join("") // ^ + .split("\n") + .map((x) => `\t${x}`) + .join("\n"); + +const languageCommentStrings = { + js: ["/*", "*/"], + ts: ["/*", "*/"], +}; + +const addToDir = (dir) => { + const files = walk(dir, Object.keys(languageCommentStrings)); + + for (let path of files) { + const file = fs.readFileSync(path).toString().split("\r").join(""); + const fileType = path.slice(path.lastIndexOf(".") + 1); + const commentStrings = languageCommentStrings[fileType]; + if (!commentStrings) continue; + + const preamble = + commentStrings[0] + + "\n" + + FOSSCORD_LICENSE_PREAMBLE + + "\n" + + commentStrings[1]; + + if (file.startsWith(preamble)) { + continue; + } + + // This is kind of lame. + if (file.includes("@fc-license-skip") && path != __filename) { + console.log(`skipping ${path} as it has a different license.`); + continue; + } + + console.log(`writing to ${path}`); + fs.writeFileSync(path, preamble + "\n\n" + file); + } +}; + +addToDir(FOSSCORD_SOURCE_DIR); +addToDir(FOSSCORD_SCRIPTS_DIR); -- cgit 1.5.1