1.0.4 • Published 6 years ago

@kvnlnt/spawn v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

Spawn

Features

  1. Create your own cli
  2. Auto generates guide for cli and individual commands
  3. Interactive mode (using -i flag)
  4. Argument defaults

Install

npm i @kvnlnt/spawn

Usage

mycli.js

// the lib
const cli = require("@kvnlnt/spawn");

// add a command, add an argument, a callback and an example
cli
  .command("hello", "Prints hello")
  .argument("output", "o", "Hello to")
  .callback(resp => console.log("Hello,", resp.output))
  .example("hello -o=World", "Prints; Hello World");

// add another
cli
  .command("goodbye", "Prints goodbye")
  .argument("output", "o", "Goodbye to")
  .callback(resp => console.log("Goodbye,", resp.output))
  .example("goodbye -o=World", "Prints: Goodbye World");

// set the default command
cli.defaultCommand("help");

// run the cli
cli.run();

Now set up your tool to be a cli with npm link and you'll get something like this

mycli hello -o=You
# result => Hello You

Methods

All methods are meant to be chained. This is to support a clean api. To keep things organized it's recommended that you keep your callbacks as external scripts. It keep my in a tasks folder.

command(name, desc)

Adds a command

ArgTypeDesc
namestringname of command
descstringdescription of command

argument(name, abbr, desc, def)

Adds an argument to last added command

ArgTypeDesc
namestringname of argument
abbrstringabbreviated argument name
descstringdescription of argument
defanythingdefault value

callback(f)

Adds callback to last added command

ArgTypeDesc
ffunctionfunction called when command is executed

example(cmd, desc)

Adds example to last added command

ArgTypeDesc
cmdstringexample command
descstringdescription

defaultCommand(cmd)

Sets default command

ArgTypeDesc
cmdstringname of command

run()

Runs the cli

printGuide()

This is the auto generated guide. To use it, assign it as a callback. Something like this:

cli.command("guide", "Prints guide").callback(cli.printGuide);

printCommandGuide()

This is the autogenerated guide for a command. Commands are bound to the cli instance and therefore are available inside the callback as this.printCommandGuide. Just pass in the string name of the command. Here's an example:

// your callback
function myCallback(resp) {
  if (resp.help === true) return this.printCommandGuide("myCallback");
  console.log(resp.output);
}

// your cli
cli
  .command("myCallback", "does stuff")
  .argument("help", "h", "Output help", false)
  .callback(myCallback);

The following will output the command's guide:

mycli myCallback -h

Flags

-i, Interactive Mode

You can pass the -i flag without a command and use your tool interactively, like this:

mycli -i

Examples

All examples are in the Examples folder.