UNPKG

@predictive-text-studio/lexical-model-compiler

Version:
58 lines 3 kB
#!/usr/bin/env node "use strict"; /** * kmlmi - Keyman Lexical Model model_info Compiler */ Object.defineProperty(exports, "__esModule", { value: true }); const program = require("commander"); const fs = require("fs"); const path = require("path"); const kmp_compiler_1 = require("./package-compiler/kmp-compiler"); const model_info_compiler_1 = require("./model-info-compiler/model-info-compiler"); let inputFilename; /* Arguments */ program .description('Merges Keyman lexical model model_info files. Intended for use within the keymanapp/lexical-models repository.') .version(require('../package.json').version) .arguments('<infile>') .action(infile => inputFilename = infile) .option('-o, --outFile <filename>', 'where to save the resultant file') .option('-m, --model <model_id>', 'model id, defaults to basename of input file sans .model_info extension') .option('-s, --source <source>', 'path to source of model, relative to lexical-models repo root') .option('--kpsFilename <kpsFilename>', 'path to .model.kps file, defaults to source/<model_id>.model.kps') .option('--kmpFilename <kmpFilename>', 'path to .model.kmp file, defaults to build/<model_id>.model.kmp') .option('--jsFilename <jsFilename>', 'path to .model.js file, defaults to build/<model_id>.model.js'); program.parse(process.argv); // Deal with input arguments: if (!inputFilename) { exitDueToUsageError('Must provide a lexical model .model_info source file.'); } let model_id = program.model ? program.model : path.basename(inputFilename).replace(/\.model_info$/, ""); let outputFilename = program.outFile ? program.outFile : path.join(path.dirname(inputFilename), 'build', path.basename(inputFilename)); let kpsFilename = program.kpsFilename ? program.kpsFilename : path.join(path.dirname(inputFilename), 'source', path.basename(inputFilename).replace(/\.model_info$/, '.model.kps')); let kmpFilename = program.kmpFilename ? program.kmpFilename : path.join(path.dirname(inputFilename), 'build', path.basename(inputFilename).replace(/\.model_info$/, '.model.kmp')); let jsFilename = program.jsFilename ? program.jsFilename : path.join(path.dirname(inputFilename), 'build', path.basename(inputFilename).replace(/\.model_info$/, '.model.js')); // // Load .kps source data // let kpsString = fs.readFileSync(kpsFilename, 'utf8'); let kmpCompiler = new kmp_compiler_1.default(); let kmpJsonData = kmpCompiler.transformKpsToKmpObject(kpsString); // // Write out the merged .model_info file // let modelInfoOptions = { model_id: model_id, kmpJsonData: kmpJsonData, sourcePath: program.source, modelFileName: jsFilename, kmpFileName: kmpFilename }; model_info_compiler_1.writeMergedModelMetadataFile(inputFilename, outputFilename, modelInfoOptions); function exitDueToUsageError(message) { console.error(`${program._name}: ${message}`); console.error(); program.outputHelp(); return process.exit(64 /* EX_USAGE */); } //# sourceMappingURL=kmlmi.js.map