UNPKG

junit2json

Version:
38 lines 1.4 kB
#!/usr/bin/env node import fs from 'node:fs'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; import { parse } from './index.js'; const argv = yargs(hideBin(process.argv)) .usage('Usage: $0 [path]') .command('$0 <path>', 'Convert JUnit XML format to JSON') .options({ p: { type: 'boolean', alias: 'pretty', describe: 'Output pretty JSON', default: false }, f: { type: 'string', alias: 'filter-tags', describe: 'Filter XML tag names' }, }) .alias('p', 'pretty') .alias('f', 'filter-tags') .coerce('f', (filter) => filter?.split(',')) .positional('path', { describe: 'JUnit XML path', type: 'string', demandOption: true, }) .example('$0 -p -f system-out,system-err junit.xml', 'Output pretty JSON with filter <system-out> and <system-err> tags.') .strict() .parseSync(); const main = async () => { const xmlString = fs.readFileSync(argv.path, 'utf8').toString(); const filterSet = new Set(argv.filterTags); const _replacer = (key, value) => { if (filterSet.has(key)) return undefined; return value; }; const indent = (argv.pretty) ? 2 : 0; const replacer = (argv.filterTags && argv.filterTags.length > 0) ? _replacer : undefined; const output = await parse(xmlString); console.log(JSON.stringify(output, replacer, indent)); }; main(); //# sourceMappingURL=cli.js.map