mirror of
https://github.com/tree-sitter/tree-sitter.git
synced 2026-09-10 07:26:23 -04:00
This is not breaking for consumers of the web bindings, nor the playground as both filenames will be kept in the .github.io repo
46 lines
1.2 KiB
TypeScript
Executable file
46 lines
1.2 KiB
TypeScript
Executable file
import fs from 'fs';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
const inputFiles = [
|
|
'../lib/tree-sitter.c',
|
|
'../src/constants.ts',
|
|
'../src/index.ts',
|
|
'../src/language.ts',
|
|
'../src/lookahead_iterator.ts',
|
|
'../src/marshal.ts',
|
|
'../src/node.ts',
|
|
'../src/parser.ts',
|
|
'../src/query.ts',
|
|
'../src/tree.ts',
|
|
'../src/tree_cursor.ts',
|
|
'../lib/exports.txt',
|
|
'../lib/imports.js',
|
|
'../lib/prefix.js',
|
|
...listFiles('../../include/tree_sitter'),
|
|
...listFiles('../../src'),
|
|
];
|
|
|
|
const outputFiles = ['../web-tree-sitter.js', '../web-tree-sitter.wasm'];
|
|
const outputMtime = Math.min(...outputFiles.map(getMtime));
|
|
|
|
for (const inputFile of inputFiles) {
|
|
if (getMtime(inputFile) > outputMtime) {
|
|
console.log(`File '${inputFile}' has changed. Re-run 'npm run build:wasm'.`);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function listFiles(dir: string): string[] {
|
|
return fs
|
|
.readdirSync(path.resolve(scriptDir, dir))
|
|
.filter(p => !p.startsWith('.'))
|
|
.map(p => path.join(dir, p));
|
|
}
|
|
|
|
function getMtime(p: string): number {
|
|
return fs.statSync(path.resolve(scriptDir, p)).mtime.getTime();
|
|
}
|