argv-parser

Argv-parser is a small and simple node.js module to parser process.argv.

Argv-parser

Argv-parser is a small and simple node.js module to parse process.argv

Argv-parser is designed to be simple and will do nothing about:

  • option registration
  • description of options
  • output
npm install argv-parser --save
var parser = require('argv-parser');

Parse argument vector (argv) or something like argv.

  • parsed: Object the parsed object
  • warnings: Object the warnings of each option. If not exists, ret.warning will be an empty object
  • errors: Object the errors of each option.

process.argv or something like that.

  • rules: Object an extended nopt rules
  • offset: Number (optional, default to 2) the offset from which the parser should start to parse.

The same as parser.parse

  • rules: Object
  • types: Object (optional) type definitions. For most cases, you needn't this option

test.js

var rules = {
    open: {
        type: Boolean,
        value: true
    },
 
    port: {
        type: Number,
        short: 'p',
        valuefunction(portparsedtool) {
            if(!port){
                port = 9230;
            }
 
            if(port < 8000){
                tool.warn('port < 8000 which is dangerous');
                
                if(port < 1000){
                    tool.error('port < 100 which is forbidden');
                    return;
                }
            }
 
            return port;
        }
    },
 
    html: {
        type: 'html',
    },
 
    name: {
        type: String
    }
};
 
var data = parser.parse(process.argv, {
    rules: rules
});

Default values:

$ node test.js
> data.parsed.open; // true
> data.parsed.port; // 9230
 

Type limitation:

$ node test.js --port 8888 --no-open --name name<script>alert(123)</script>
> data.parsed.open; // false
> data.parsed.port; // 8888
> data.parsed.name; // 'namealert(123)'; -> stripped
> data.errors;      // {}
> data.warnings;    // {}

Warnings and errors:

$ node test.js --port 888 --no-open --name name<script>alert(123)</script>
> data.parsed.open; // false
> data.parsed.port; // undefined; -> error
> data.parsed.name; // 'name<script>alert(123)</script>'
> data.errors;      // {port: ['port < 100 which is forbidden']}
> data.warnings;    // {port: ['port < 8000 which is dangerous']}