UNPKG

xrefcli

Version:

CLI command for the searching through OpenEdge XREF

151 lines 5.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const help_1 = require("./help"); class ArgsParser { constructor() { this.nameDefinition = { name: 'name', alias: 'n', defaultOption: true }; this.jsonDefinition = { name: 'json', type: Boolean }; this.helpDefinition = { name: 'help', alias: 'h', type: Boolean }; } parse() { const commandLineArgs = require('command-line-args'); let optionDefs = []; const mainDefinitions = [ { name: 'command', defaultOption: true }, { name: 'help', alias: 'h', type: Boolean } ]; const mainOptions = commandLineArgs(mainDefinitions, { stopAtFirstUnknown: true }); const argv = mainOptions._unknown || []; if (mainOptions['command'] === undefined) { this.help(); process.exit(0); } let displayHelp = false; if (mainOptions['help'] === true) { displayHelp = true; } let options = {}; if (displayHelp) { options = { help: true }; } switch (mainOptions.command) { case 'export': optionDefs = this.exportOptions(optionDefs); break; case 'init': optionDefs = this.initOptions(optionDefs); break; case 'list': optionDefs = this.listOptions(optionDefs); break; case 'matrix': optionDefs = this.matrixOptions(optionDefs); break; case 'parse': optionDefs = this.parseOptions(optionDefs); break; case 'remove': optionDefs = this.removeOptions(optionDefs); break; case 'repos': optionDefs = this.reposOptions(optionDefs); break; case 'search': optionDefs = this.searchOptions(optionDefs); break; case 'show': optionDefs = this.showOptions(optionDefs); break; case 'switch': optionDefs = this.switchOptions(optionDefs); break; } try { options = Object.assign(options, commandLineArgs(optionDefs, { argv })); } catch (e) { console.error(e.toString().split('\n')[0]); } return { command: mainOptions.command, options: options }; } exportOptions(optionDefs) { optionDefs.push(this.nameDefinition); optionDefs.push({ name: 'outfile', alias: 'o' }); optionDefs.push({ name: 'includeempty', alias: 'i', type: Boolean }); return optionDefs; } initOptions(optionDefs) { optionDefs.push(this.nameDefinition); optionDefs.push({ name: 'dir', alias: 'd' }); optionDefs.push({ name: 'srcdir', alias: 's' }); optionDefs.push({ name: 'srcroot', alias: 'r' }); return optionDefs; } listOptions(optionDefs) { optionDefs.push({ name: 'tables', alias: 't', type: Boolean }); optionDefs.push({ name: 'dbprefix', alias: 'p', type: Boolean }); optionDefs.push({ name: 'dbs', alias: 'd', type: Boolean }); optionDefs.push(this.jsonDefinition); return optionDefs; } matrixOptions(optionDefs) { optionDefs.push({ name: 'tables', alias: 't', type: Boolean }); optionDefs.push({ name: 'sources', alias: 's', type: Boolean }); optionDefs.push(this.jsonDefinition); return optionDefs; } parseOptions(optionDefs) { optionDefs.push(this.nameDefinition); return optionDefs; } removeOptions(optionDefs) { optionDefs.push(this.nameDefinition); return optionDefs; } reposOptions(optionDefs) { optionDefs.push(this.helpDefinition); optionDefs.push(this.jsonDefinition); optionDefs.push({ name: 'verbose', alias: 'v', type: Boolean }); return optionDefs; } searchOptions(optionDefs) { optionDefs.push(this.helpDefinition); optionDefs.push(this.nameDefinition); optionDefs.push({ name: 'field', alias: 'f' }); optionDefs.push({ name: 'table', alias: 't' }); optionDefs.push({ name: 'db' }); optionDefs.push({ name: 'create', alias: 'c' }); optionDefs.push({ name: 'update', alias: 'u' }); optionDefs.push({ name: 'delete', alias: 'd' }); optionDefs.push({ name: 'class' }); optionDefs.push({ name: 'method' }); optionDefs.push({ name: 'interface' }); optionDefs.push({ name: 'include' }); optionDefs.push(this.jsonDefinition); optionDefs.push({ name: 'batch', alias: 'b', type: Boolean }); // batch, no count in results optionDefs.push({ name: 'open', alias: 'o', type: Boolean }); return optionDefs; } showOptions(optionDefs) { optionDefs.push({ name: 'source', alias: 's', defaultOption: true }); optionDefs.push({ name: 'tables', alias: 't', type: Boolean }); optionDefs.push(this.jsonDefinition); optionDefs.push({ name: 'xref', alias: 'x', type: Boolean }); optionDefs.push({ name: 'open', alias: 'o', type: Boolean }); return optionDefs; } switchOptions(optionDefs) { optionDefs.push(this.nameDefinition); return optionDefs; } help() { const help = new help_1.Help(); help.main(); process.exit(0); } } exports.ArgsParser = ArgsParser; //# sourceMappingURL=argsparser.js.map