argchecker

A command line options parser

argchecker

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