argchecker

A command line options parser for Node.js.

Usage no npm install needed!

<script type="module">
  import argchecker from 'https://cdn.skypack.dev/argchecker';
</script>

README

argchecker

A command line options parser for Node.js.

Installation

$ npm install argchecker

Usage

#!/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
  // ...
}

Example

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
  // ...
}

Tags

repeat

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

repeat (for option)

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

must

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

Other tags

param (for option)

You have to set this tag, when an option has a next parameter.

var ac = require('argchecker').check({
  expect: {
    '-l': {param: 'LOG_FILE'}     // <-- 
  }
});

default (for option)

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}
  }
});

solo (for option)

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 (top level only)

"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]

exit (top level only)

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          // <-- 
});

License

The MIT License