river/runtime/plugins/node/validate.js
2021-01-26 15:57:07 +08:00

24 lines
706 B
JavaScript

#!/usr/bin/node
const fs = require('fs');
const esprima = require('esprima');
const file = process.argv[2];
const code = fs.readFileSync(file).toString();
const res = esprima.parseScript(code, { tolerant: true });
if (res.errors.length != 0) {
const split = code.split('\n');
for (const error of res.errors) {
console.error(split[error.lineNumber - 1]);
for (let i = 1; i < error.column; i++) {
process.stderr.write(' ');
}
console.error('^');
console.error(`${error.toString()}
at (${file}:${error.lineNumber}:${error.column})`);
console.error('--------------------------------------------------------------------------');
}
process.exit(1);
}
process.exit(0);