zenodraft
Version:
CLI to manage depositions on Zenodo and Zenodo Sandbox
33 lines (32 loc) • 1.01 kB
JavaScript
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`);
}
};