nodejs-bash-completion/pm-install

62 lines
1.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
const This = require('./this');
const {Command} = require('commander');
const program = new Command();
const errorColor = (str) => {
// Add ANSI escape codes to display text in red.
return `\x1b[31m${str}\x1b[0m`;
};
class PmInstall extends This {
constructor() {
super();
this.version = '0.0.1';
}
start() {
// Usage
const pmInstall = new PmInstall();
// Output: Methods of ExampleClass: [ 'methodOne', 'methodTwo' ]
// Properties of ExampleClass: [ 'propertyOne', 'propertyTwo', 'version' ] and Version: 1.1.0
pmInstall.discovery();
program
.name(this.scriptName)
.version('0.0.1')
.description('Install package with fake package manager')
.usage('-n 3 32 -l x y z -- op')
.configureOutput({
// Visibly override write routines as example!
//writeOut: (str) => process.stdout.write(`[OUT] ${str}`),
writeErr: (str) => process.stdout.write(`[ERR] ${str}`),
// Highlight errors in color.
outputError: (str, write) => write(errorColor(str)),
});
program
.option('-n, --number <numbers...>', 'specify numbers')
.option('-l, --letter [letters...]', 'specify letters')
.parse();
// console.log('options array');
// console.log(program.options.map(o => o.flags));
// console.log('visible options');
// const helper = program.createHelp();
// console.log(helper.visibleOptions(program).map(o => o.flags));
if (Object.keys(program.opts()).length || program.args.length) {
console.log('Options: ', program.opts());
console.log('Remaining arguments: ', program.args);
} else {
program.outputHelp();
}
}
}
// main
const pmInstall = new PmInstall();
pmInstall.start();