diff options
Diffstat (limited to 'scripts/license.js')
-rw-r--r-- | scripts/license.js | 60 |
1 files changed, 60 insertions, 0 deletions
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); |