UNPKG

zenodraft

Version:

CLI to manage depositions on Zenodo and Zenodo Sandbox

33 lines (32 loc) 1.01 kB
import * as fs from 'fs'; import * as path from 'path'; import Ajv from 'ajv'; import addFormats from 'ajv-formats'; const load_metadata = (filename) => { return JSON.parse(fs.readFileSync(filename, 'utf8')); }; const load_schema = () => { const filename = path.join(__dirname, '..', '..', '..', 'assets', 'schema.json'); return JSON.parse(fs.readFileSync(filename, 'utf8')); }; export const metadata_validate = (filename, verbose = false) => { const msg = `validating metadata from ${filename}...`; if (verbose) { console.log(msg); } const ajv = new Ajv(); addFormats(ajv); const schema = load_schema(); const data = load_metadata(filename); const validate = ajv.compile(schema); const isvalid = validate(data); if (isvalid === false) { validate.errors.forEach(error => { console.log(error); }); throw new Error('(errid 14) Validation error'); } if (verbose) { console.log(`${msg}done`); } };