ajv-cli
Version:
Command line interface for Ajv JSON schema validator
94 lines • 2.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.compile = exports.logJSON = exports.openFile = exports.getFiles = void 0;
const glob = require("glob");
const path = require("path");
const fs = require("fs");
const yaml = require("js-yaml");
const JSON5 = require("json5");
function getFiles(args) {
let files = [];
if (Array.isArray(args))
args.forEach(_getFiles);
else
_getFiles(args);
return files;
function _getFiles(fileOrPattern) {
if (glob.hasMagic(fileOrPattern)) {
const dataFiles = glob.sync(fileOrPattern, { cwd: process.cwd() });
files = files.concat(dataFiles);
}
else {
files.push(fileOrPattern);
}
}
}
exports.getFiles = getFiles;
function getFormatFromFileName(filename) {
return path.extname(filename).substr(1).toLowerCase();
}
function decodeFile(contents, format) {
switch (format) {
case "json":
return JSON.parse(contents);
case "jsonc":
case "json5":
return JSON5.parse(contents);
case "yml":
case "yaml":
return yaml.safeLoad(contents);
default:
throw new Error(`unsupported file format ${format}`);
}
}
function openFile(filename, suffix) {
let json = null;
const file = path.resolve(process.cwd(), filename);
try {
try {
const format = getFormatFromFileName(filename);
json = decodeFile(fs.readFileSync(file).toString(), format);
}
catch (e) {
json = require(file);
}
}
catch (err) {
const msg = err.message;
console.error(`error: ${msg.replace(" module", " " + suffix)}`);
process.exit(2);
}
return json;
}
exports.openFile = openFile;
function logJSON(mode, data, ajv) {
switch (mode) {
case "json":
data = JSON.stringify(data, null, " ");
break;
case "line":
data = JSON.stringify(data);
break;
case "no":
data = "";
break;
case "text":
if (ajv)
data = ajv.errorsText(data);
}
return data;
}
exports.logJSON = logJSON;
function compile(ajv, schemaFile) {
const schema = openFile(schemaFile, "schema");
try {
return ajv.compile(schema);
}
catch (err) {
console.error(`schema ${schemaFile} is invalid`);
console.error(`error: ${err.message}`);
process.exit(1);
}
}
exports.compile = compile;
//# sourceMappingURL=util.js.map
;