xrefcli
Version:
CLI command for the searching through OpenEdge XREF
151 lines • 5.68 kB
JavaScript
"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