UNPKG

@canboat/canboatjs

Version:

Native javascript version of canboat

107 lines (106 loc) 3.41 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fromPgn_1 = require("../fromPgn"); const minimist_1 = __importDefault(require("minimist")); const readline_1 = __importDefault(require("readline")); const utils_1 = require("./utils"); const argv = (0, minimist_1.default)(process.argv.slice(2), { alias: { h: 'help' }, string: ['pgn', 'manufacturer'], boolean: [ 'n', 'r', 'camel', 'camel-compat', 'show-non-matches', //'show-create-pgns', 'pretty', 'show-warnings', 'coalesced' ] }); (0, utils_1.printVersion)(argv); if (argv['help']) { console.error(`Usage: ${process.argv[1]} [options] Options: -c don't check for invalid values -n output null values -r parse $MXPGN as little endian --pretty pretty json --camel output field names in camelCase --camel-compat output field names in camelCase and regular --show-non-matches show pgn data without any matches --show-warnings show warning messages --coalesced force coalesced format --fast force fast format --pgn <number> filter for the given pgn number --manufacturer <str> filter for pgns from the given manufacturer -h, --help output usage information`); process.exit(1); } let format = undefined; if (argv['coalesced']) { format = 1; } else if (argv['fast']) { format = 0; } let pgn_filter = argv['pgn']; const manufacturer_filter = argv['manufacturer']; if (pgn_filter !== undefined && Array.isArray(pgn_filter) === false) { pgn_filter = [pgn_filter]; } const parser = new fromPgn_1.Parser({ returnNulls: argv['n'] === true, littleEndianMXPGN: argv['r'] === true, checkForInvalidFields: argv['c'] !== true, useCamel: argv['camel'], useCamelCompat: argv['camel-compat'], returnNonMatches: argv['show-non-matches'], format }); parser.on('error', (pgn, error) => { console.error(`Error parsing ${pgn.pgn} ${error}`); console.error(error.stack); }); parser.on('warning', (pgn, error) => { if (argv['show-warnings']) { console.error(`Warning parsing ${pgn.pgn} ${error}`); } }); const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout, terminal: false }); rl.on('line', (line) => { if (argv['log-input']) { console.log(line); } let pgn; if (line.length > 13 && line.charAt(13) === ';') { if (line.charAt(14) === 'A') { pgn = parser.parseString(line.substring(16)); } } else { pgn = parser.parseString(line.trim()); } if (pgn && (pgn_filter === undefined || pgn_filter.find((p) => pgn.pgn === Number(p)))) { if (manufacturer_filter !== undefined) { const manufacturer = pgn.fields.manufacturerCode || pgn.fields['Manufacturer Code']; if (manufacturer !== manufacturer_filter) { return; } } console.log(JSON.stringify(pgn, null, argv['pretty'] ? 2 : 0)); } }); //# sourceMappingURL=analyzerjs.js.map