cli-params
cli-params is a simple module that helps your CLI tool parse command line arguments and build parameters format to test if cmd is valid
Installation
npm i cli-params
Usage
cli-params works on both regular package and globally installed one.
Simple Method
Dead simple, use it on the fly.
node index.js --p1 --p2 hello
your-cli-tool --p1 --p2 hello
import CLIParams from 'cli-params';
new CLIParams().exec((err, params) => {
if (err) return console.log(err);
console.log(params);
});
{ "p1": true, "p2": "hello" }
Prebuilt Format
Use add
method to add format(s).
node index.js -d -i --id scrwdrv --bonus 12.0
const cliParams = new CLIParams();
cliParams.add({
params: [
{
param: 'debug',
type: 'boolean',
optional: true,
alias: 'd'
},
{
param: 'interval',
type: 'int',
default: 50,
alias: 'i'
},
{
param: 'id',
type: 'string'
},
{
param: 'bonus',
type: 'float',
optional: false
}
]
}, (err) => {
if (err) return console.log(err);
cliParams.exec((err, params) => {
if (err) return console.log(err);
console.log(params);
});
});
{ "debug": true, "interval": 50, "id": "scrwdrv", "bonus": 12 }
Types for Param
- int
- float
- string
- boolean
- array-of-int (not available for Target)
- array-of-float (not available for Target)
- array-of-string (not available for Target)
- array-of-boolean (not available for Target)
Mutiple Formats
You can pass formats in an array, by array index order, formats will be used to parse given parameters and callback the first successfully parsed one.
node index.js -h
cliParams.add([
{
params: [
{
param: 'input',
type: 'string',
alias: 'i'
},
{
param: 'password',
type: 'string',
optional: true,
alias: 'p'
}
],
id: 'regular'
},
{
params: {
param: 'help',
type: 'boolean',
alias: 'h'
},
id: 'help'
},
{
params: {
param: 'version',
type: 'boolean',
alias: 'v'
},
id: 'version'
}
]).exec((err, params, id) => {
if (err) return console.log(err);
console.log(id);
console.log(params);
});
{ "help": true }
Trailing Param (Target)
Parameter with no name and located at the end of command line will be treated as Target
. Every cmd can only have one target and need to be named beforehand.
node index.js -r 50 https://google.com
cliParams.add({
params:
{
param: 'rate',
type: 'int',
alias: 'r'
},
target: {
param: 'url',
type: 'string',
optional: false
}
}, (err) => {
if (err) return console.log(err);
cliParams.exec((err, params) => {
if (err) return console.log(err);
console.log(params);
});
});
{ "url": "https://google.com", "rate": 50 }
Array of ...
Passing multiple values with space as separator to a single parameter.
node index.js -i 1 2 3 4 5 -s google yahoo myTarget
new CLIParams().add({
params: [
{
param: 'intArr',
type: 'array-of-int',
alias: 'i'
}, {
param: 'stringArr',
type: 'array-of-string',
alias: 's'
}
],
target: {
param: 'target',
type: 'string'
}
}).exec(async (err, params) => {
if (err) return console.log(err);
console.log(params);
});
{ "target": "myTarget", "intArr": [ 1, 2, 3, 4, 5 ], "stringArr": [ "google", "yahoo" ] }