-
Notifications
You must be signed in to change notification settings - Fork 3
/
validate.js
31 lines (26 loc) · 741 Bytes
/
validate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const fs = require('fs');
const readline = require('readline');
const Ajv = require("ajv/dist/2020")
const addFormats = require('ajv-formats');
const ajv = new Ajv({
strict: false
});
addFormats(ajv);
const packageSchema = JSON.parse(fs.readFileSync(process.argv[2]));
const validate = ajv.compile(packageSchema);
(async () => {
// Read lines from stdin
const fileStream = fs.createReadStream('/dev/stdin');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
// Parse and try to validate each line
for await (const line of rl) {
const json = JSON.parse(line);
const valid = validate(json);
if (!valid) {
console.log(JSON.stringify(validate.errors));
}
}
})();