1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-22 18:32:29 +01:00
server/scripts/license.js
Madeline 0e7f127ece 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
2023-01-18 13:05:49 +11:00

61 lines
1.5 KiB
JavaScript

/*
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);