UNPKG

kathairo

Version:

A CLI utility for processing USFM.

48 lines (39 loc) 1.86 kB
#!/usr/bin/env node import yargs from 'yargs' import { loadContent, createFile, getVersion } from "./src/fileUtils.js"; import { loadProskomma, getDocuments } from "./src/proskomma.js"; import { getFlatVersesForProskommaOutput, getSerializableVerses } from "./src/dataConversion.js"; import validate from "./src/validator.js"; import { initLogger, log } from "./src/logger.js"; const version = await getVersion(); const options = yargs(process.argv) .scriptName("kathairo") .usage("KATHAIRO, Usage: -s <source> -o <output>") .option("s", { alias: "source", describe: "Source file path", type: "string", demandOption: true }) .option("l", { alias: "lang", describe: "3 character language code", type: "string", demandOption: true }) .option("a", { alias: "abbrev", describe: "Translation abbreviation", type: "string", demandOption: true }) .option("o", { alias: "output", describe: "Output file path", type: "string", demandOption: false }) .option('q', { alias: 'quiet', describe: "Do not print errors", type: "boolean", demandOptions: false, default: false }) .help('h') .alias('h', 'help') .version(version) .alias('v', 'version') .argv; initLogger(options.quiet); try { const files = await loadContent(options.source, options.quiet); const validatedFiles = validate(files, options.quiet); const pk = await loadProskomma(validatedFiles, options.lang, options.abbrev, options.quiet); const result = await getDocuments(pk); // log('info', JSON.stringify(result, null, 2)); const verses = getFlatVersesForProskommaOutput(result.data.docSets) const outputString = getSerializableVerses(verses); if (options.output) { await createFile(options.output, outputString) } else { process.stdout.write(outputString); } } catch (error) { log('error', "Oops. Something went wrong."); log('error', error); }