36 lines
784 B
JavaScript
Executable file
36 lines
784 B
JavaScript
Executable file
#!/usr/bin/env node
|
|
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const inputFiles = [
|
|
"binding.c",
|
|
"binding.js",
|
|
"exports.txt",
|
|
"imports.js",
|
|
"prefix.js",
|
|
...list("../include/tree_sitter"),
|
|
...list("../src"),
|
|
];
|
|
|
|
const outputFiles = ["tree-sitter.js", "tree-sitter.wasm"];
|
|
|
|
const outputMtime = Math.min(...outputFiles.map(mtime));
|
|
|
|
for (const inputFile of inputFiles) {
|
|
if (mtime(inputFile) > outputMtime) {
|
|
console.log(`File '${inputFile}' has changed. Re-run 'script/build-wasm'.`);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function list(dir) {
|
|
return fs
|
|
.readdirSync(path.join(__dirname, dir), "utf8")
|
|
.filter((p) => !p.startsWith("."))
|
|
.map((p) => path.join(dir, p));
|
|
}
|
|
|
|
function mtime(p) {
|
|
return fs.statSync(path.join(__dirname, p)).mtime;
|
|
}
|