#!/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 ', '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();