1.0.2 • Published 4 years ago

yargs-async-cli v1.0.2

Weekly downloads
2
License
ISC
Repository
github
Last release
4 years ago

yargs Async CLI

Project on GitHub

Description

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

  • All the parsing, grouping and options you know and love in yargs
  • Built in global logger (easily overridable)
  • Properly propagated async-actions
  • Very lean boilerplate - Most of the nags are under the hood

Installation

npm i yargs-async-cli / yarn i yargs-async-cli / whatever the cool kids use these days.

TL;DR Usage

An Async-CLI project consists of two parts

  • Command files that control how each CLI command should be parsed and executed (these are basically yargs command modules).
  • The code file that will be actually run by node - it creates a 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).

Build your command files by extending 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

Then, add the code file that will actually be run

import {CLI} from 'async-cli/lib/cli';
    
const cli = new CLI({commandsDir: './src/cliCommands'}); // Your command files directory
await cli.runFromArgs();

Beyond the TL;DR

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago