#!/usr/bin/env node const path = require('path'); const omelette = require('omelette'); const { Command } = require('commander'); const program = new Command(); // Example of subcommands which are implemented as stand-alone executable files. // // When `.command()` is invoked with a description argument, // this tells Commander that you're going to use a stand-alone executable for the subcommand. // // See files pm-install, pm-search, pm-list and myUpdateSubCommand scriptName = path.parse(process.argv[1]).base; program .name(scriptName) .version('0.0.1') .description('Fake package manager') .command('install [name]', 'install one or more packages') .alias('i') .command('search [query]', 'search with optional query') .alias('s') .command('update', 'update installed packages', { executableFile: 'myUpdateSubCommand', }) .command('list', 'list packages installed', { isDefault: false }); // function description for bash-completion omelette(scriptName).tree({ install: ['name'], search: ['query'], update: [], list: [] }).init() program.parse(); // // If you want to have a setup feature, you can use `omeletteInstance.setupShellInitFile()` function. // if (~process.argv.indexOf('--setup')) { // omelette.completion.setupShellInitFile() // } // // Similarly, if you want to tear down autocompletion, use `omeletteInstance.cleanupShellInitFile()` // if (~process.argv.indexOf('--cleanup')) { // omelette.completion.cleanupShellInitFile() // } // Try the following on macOS or Linux: // ./examples/pm // // Try the following: // ./pm // ./pm help install // ./pm install -h // ./pm install foo bar baz // ./pm install foo bar baz --force