@jirutka/ajv-cli
Version:
CLI for Ajv JSON Schema Validator with human-friendly error messages
48 lines • 1.33 kB
JavaScript
import { exit } from 'node:process';
import { Bool, parseArgv } from './args-parser.js';
import { commands, printHelp } from './commands/index.js';
import { ProgramError, UsageError } from './errors.js';
const pkgName = '@jirutka/ajv-cli';
const pkgVersion = '6.0.0';
const globalOptions = {
help: {
type: Bool,
alias: 'h',
},
};
async function main(argv) {
switch (argv[0]) {
case '--help':
case '-h':
return printHelp();
case '--version':
case '-V':
return printVersion();
}
const cmdName = argv.shift() ?? '';
if (!Object.hasOwn(commands, cmdName)) {
throw new UsageError(`Unknown command: ${cmdName}`);
}
const command = commands[cmdName];
const [opts, args] = parseArgv({ ...command.options, ...globalOptions }, argv);
if (opts.help) {
printHelp(cmdName);
return true;
}
return await command.execute(opts, args);
}
function printVersion() {
console.log(`${pkgName} ${pkgVersion}`);
return true;
}
main(process.argv.slice(2))
.then(ok => exit(ok ? 0 : 1))
.catch(err => {
if (err instanceof ProgramError) {
console.error(`ajv: ${err.message}`);
exit(err.exitCode);
}
throw err;
});
//# sourceMappingURL=main.js.map