So you want a CLI...
A better CLI framework, made for the ES2015 era.
Visit http://sywac.io for detailed documentation. NOTE! The docs site is still under construction.
Feature Highlights
- Single package install
- Asynchronous parsing, validation, and command execution
- Type-based argument parsing
- Plug in your own types or override/extend the built-in ones
- Support for simple CLIs or complex nested command trees
- First-class support for positional arguments, with or without commands
- Flexible auto-generated help content
- Support for ANSI styles/colors (we recommend chalk)
- Define styles/colors inline or decorate content with style hooks
- Coherent API
- Parse strings as easily as
process.argv
- Supports concurrent parsing, safe for chatbots or other server-side apps
Quick Start Guide
First install sywac from npm:
$ npm install --save sywac
Then create a cli.js
file with code similar to this:
#!/usr/bin/env node'use strict' version'-v, --version'
Make the cli.js
file executable:
$ chmod +x cli.js
And set up cli.js
as the "bin"
field in package.json
:
Then test it out. Without any arguments, it will print the help text.
$ ./cli.jsUsage: cli <string> [options] Arguments: <string> A required string argument [required] [string] Options: -b, --bool A boolean option [boolean] -n, --num <number> A number option [number] -h, --help Show help [commands: help] [boolean] -v, --version Show version number [commands: version] [boolean]
Let's try passing some arguments:
$ ./cli.js hello -b -n 42{ "_": [], "string": "hello", "b": true, "bool": true, "n": 42, "num": 42, "h": false, "help": false, "v": false, "version": false}
What happens if we pass flags without a string argument?
$ ./cli.js --boolUsage: cli <string> [options] Arguments: <string> A required string argument [required] [string] Options: -b, --bool A boolean option [boolean] -n, --num <number> A number option [number] -h, --help Show help [commands: help] [boolean] -v, --version Show version number [commands: version] [boolean] Missing required argument: string
Validation failed and sywac printed the help text with an error message. Let's check the exit code of that last run:
$ echo $?1
This is a good sign that our CLI will play well with others.
API
For details on the full API, go to http://sywac.io
License
MIT