UNPKG

csval

Version:

Check CSV files against a set of validation rules.

34 lines (27 loc) 963 B
#!/usr/bin/env node import { readFile } from "node:fs/promises"; import { program } from "commander"; import { readCsv } from "./readCsv.js"; import { readRules } from "./readRules.js"; import { parseCsv } from "./parseCsv.js"; import { validate } from "./validate.js"; const { version } = JSON.parse( await readFile(new URL("../package.json", import.meta.url), "utf-8"), ); program .version(version) .argument("<csv file>", "The CSV file to validate") .argument("[rules file]", "The rules to validate against") .action(async (csvFile, rulesFile) => { try { const csv = await readCsv(csvFile); const rules = rulesFile ? await readRules(rulesFile) : {}; const parsed = await parseCsv(csv); await validate(parsed, rules); process.stdout.write("The CSV file meets all validation checks.\n"); } catch (err) { process.stderr.write(`${err}\n`); process.exit(1); } }); program.parse(process.argv);