42 lines
1.2 KiB
JavaScript
Executable File
42 lines
1.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
const path = require('path');
|
|
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`;
|
|
}
|
|
|
|
program
|
|
.name(path.parse(process.argv[1]).base)
|
|
.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();
|
|
} |