fncli
TypeScript icon, indicating that this package has built-in type declarations

0.6.1 • Public • Published

fncli -- cli framework using function signatures

require('fncli')(
  // Pass a main function. Parameters become arguments or options
  function (name, {greeting="Hello", shout=false}) {

  }
);

This would result in the following interface:

usage: script [options] name
options:
  --greeting=<value>
  --shout

Sub-command style

require('fncli')({
  // Pass an object with functions. Function names become
  // subcommands.
  hello(name, {greeting="Hello", shout=false}) {

  },
  goodbye({shout=false}) {

  }
});

Aliases, short options

Single-letter options become short options. Aliases use ES6 syntax for assigning to new variable names.

In this example, the -s option and --shout are aliases.

require('fncli')(
  function (// Description of command
    name, // Description of name
    {
      greeting="Hello", // Description of greeting
      s: shout=false
    }) {
      // Use `shout` in here
  }
);

Repeating parameters

Rest parameters allow zero or more arguments to be passed.

require('fncli')(
  function (
    ...names,
    ) {

  }
);

Including descriptions

Descriptions of commands, arguments and options can be accomplished using comments.

require('fncli')(
  function (// Description of command
    name, // Description of name
    {
      greeting="Hello", // Description of greeting
      shout=false
    }) {

  }
);

This would result in the following interface:

error: Missing required argument
usage: script [options] name

Description of command

args:
  name    Description of name

options:
  --greeting=<value>   Description of greeting
  --shout=<value>

Usage errors

Throwing "error:" messages will show usage and the error.

require('fncli')(
  function (
    ...names, // At least one
    ) {
    if (names.length < 1) {
      throw "error: pass at least one name";
    }
  }
);

Config argument

The fncli function accepts an object as an optional second parameter, with:

  • argv to process that instead of process.argv.
  • help: true to add a --help option that prints the usage.

NB: help is likely to default to true in the future.

Argument handing

An argument of -- is skipped, and following arguments are not treated as options.

Until -- is seen, options are allowed after arguments. Eg, passing foo bar -x will set an x option to true, or be an error if there is no -x option.

Readme

Keywords

none

Package Sidebar

Install

npm i fncli

Weekly Downloads

9

Version

0.6.1

License

MIT

Unpacked Size

14.5 kB

Total Files

7

Last publish

Collaborators

  • tln