62 lines
1.7 KiB
JavaScript
Executable File
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();
|