#!/usr/bin/env node /** * kmlmc - Keyman Lexical Model Compiler */ /// import * as fs from 'fs'; import * as program from 'commander'; import { compileModel } from './util'; /** * Exit codes defined in : * https://www.freebsd.org/cgi/man.cgi?query=sysexits&apropos=0&sektion=0&manpath=FreeBSD+4.3-RELEASE&format=html */ export const enum SysExits { EX_USAGE = 64, EX_DATAERR = 65, }; let inputFilename: string; /* Arguments */ program .description('Compiles Keyman lexical models') .version(require('../package.json').version) .arguments('') .action(infile => inputFilename = infile) .option('-o, --outFile ', 'where to save the resultant file'); program.parse(process.argv); // Deal with input arguments: if (!inputFilename) { exitDueToUsageError('Must provide a lexical model source file.'); } // Compile: let code = compileModel(inputFilename); // Output: if (program.outFile) { fs.writeFileSync(program.outFile, code, 'utf8'); } else { console.log(code); } function exitDueToUsageError(message: string): never { console.error(`${program._name}: ${message}`); console.error(); program.outputHelp(); return process.exit(SysExits.EX_USAGE); }