A command line options parser for Node.js.
$ npm install argchecker
#!/usr/bin/env node
var ac = require('argchecker').check({
expect: {
'-a': {},
'-l': {param: 'LOG_FILE', default: 'log.txt'},
'arg1': {},
'arg2': {must: true}
}
});
// When invalid arg comes from command line, this script shows the usage information, and exit here.
var log = ac.get('-l'); // get '-l' option's param
var arg1 = ac.get('arg1'); // get non option args
var arg2 = ac.get('arg2'); //
if (ac.isOn('-a')) { // check '-a' option
// ...
}
in command line
$ app2 -a -l log1.txt XXX YYY
app2
#!/usr/bin/env node
var ac = require('argchecker').check({
expect: {
'-a': {},
'-l': {param: 'LOG_FILE'},
'arg1': {},
'arg2': {}
}
});
var log = ac.get('-l'); // log1.txt
var arg1 = ac.get('arg1'); // XXX
var arg2 = ac.get('arg2'); // YYY
if (ac.isOn('-a')) { // true
// ...
}
in command line
app3 -a -l log1.txt XXX1 XXX2 XXX3 YYY
app3
#!/usr/bin/env node
var ac = require('argchecker').check({
expect: {
'-a': {},
'-l': {param: 'LOG_FILE'},
'arg1': {repeat: true}, // <-- set 'repeat'
'arg2': {}
}
});
var arg1 = ac.get('arg1'); // [XXX1, XXX2, XXX3]
var arg2 = ac.get('arg2'); // YYY
in command line
$ app4 -b 10 -b 20 -b 30 XXX
app4
#!/usr/bin/env node
var ac = require('argchecker').check({
expect: {
'-b': {param: 'B_PARAM', repeat: true}, // <-- set 'repeat'
'arg1': {},
'arg2': {}
}
});
var b = ac.get('-b'); // [10, 20, 30]
var arg1 = ac.get('arg1'); // XXX
var arg2 = ac.get('arg2'); // undefined
in command line
$ app5 -b 10 YYY
app5
#!/usr/bin/env node
var ac = require('argchecker').check({
expect: {
'-b': {param: 'B_PARAM'},
'arg1': {},
'arg2': {must: true} // <-- set 'must'
}
});
var b = ac.get('-b'); // 10
var arg1 = ac.get('arg1'); // undefined <-- skiped
var arg2 = ac.get('arg2'); // YYY <-- must
You have to set this tag, when an option has a next parameter.
var ac = require('argchecker').check({
expect: {
'-l': {param: 'LOG_FILE'} // <--
}
});
This tag can be set when the "param" tag exists.
var ac = require('argchecker').check({
expect: {
'-l': {param: 'LOG_FILE', default: 'log.txt'}, // <--
'arg1': {must: true}
}
});
If 'solo' tag's option comes, all other 'must' tags are not checked.
var ac = require('argchecker').check({
expect: {
'-v': {solo: true}, // <--
'arg1': {must: true}
}
});
"name" is used in the usage information.
var ac = require('argchecker').check({
expect: {
'-b': {param: 'B_PARAM'},
},
name: 'app_name' // <--
});
in stderr message
Usage: app_name [-b B_PARAM]
The status code at the time of an error. Default: 1
var ac = require('argchecker').check({
expect: {
'-b': {param: 'B_PARAM'},
},
name: 'app_name',
exit: 20 // <--
});
The MIT License