Async-CLI turns yargs into yaaaaaaaaaargs. It's an opinionated yargs wrapper, allowing you to easily create async-based CLIs, while still enjoying yargs pirate-y goodness.
It gives you
npm i yargs-async-cli
/ yarn i yargs-async-cli
/ whatever the cool kids use these days.
An Async-CLI project consists of two parts
CLI
object and invokes its .runFromArgs
method.Below are simple implementation examples* for both parts:
*All examples are given in typescript. For regular javascript, just use require instead of imports (e.g. const CLI = require('async-cli/lib/cli').CLI
).
AbstractCLICommand
import {AbstractCLICommand, Argv, IBaseCLIArgs} from "async-cli/lib/abstractCLICommand";
interface IMyCommandCLIArgs extends IBaseCLIArgs { myOption: string }
class MyCommand extends AbstractCLICommand {
protected command = 'MyCommandName' // You can add aliases and a description
protected buildCommandArgs(args: Argv): Argv {
// Chain any yargs parser manipulation. For example
return args
.option('myOption', {default: 'someValue'});
}
protected async handleCommand(args: IMyCommandCLIArgs): Promise<any> {
// Do some async things
}
}
export default MyCommand; //This is important
import {CLI} from 'async-cli/lib/cli';
const cli = new CLI({commandsDir: './src/cliCommands'}); // Your command files directory
await cli.runFromArgs();
Generated using TypeDoc