@opt/parse

Modular options parser allowing plugins to provide everything.
This package doesn't do parsing, it provides the target for plugins to add their stuff.
The expectations are:
- You will use plugins. If you weren't, you'd just
require()
your favorite parser. - So, you will call
parse.use()
at least once to load at least one plugin. - So, you can specify the plugin providing the options parser as the first param, like:
parser.use('some-parser-plugin', 'another-plugin')
. For example, use @opt/nopt
to use nopt
to parse.
The above expectations mean this package doesn't do parsing itself. It has no dependency on a parser package. So, no baggage when requiring different parsers.
Install
npm install @opt/parse --save
Usage
var parse = require('@opt/parse')
parse.use('@opt/nopt', '@opt/words', '@opt/require')
options = parse({}, {}, process.argv, 2)
Usage: Plugins
See @use/core to understand how the use()
function behaves.
See real plugins:
- @opt/nopt
- @opt/words
- @opt/require
TODO: Make a plugin to handle type def stuff. It could be parser implementation agnostic. Then, the parser implementation plugins could grab all additional type defs from a standard format.
Example of writing a plugin for @opt/parse:
module.exports = function (options, opt) {
var nopt = require('nopt')
nopt.typeDefs.someNewType = {
type: theTypeKey,
validate: function validateThisType(data, key, value) {
}
}
}
MIT License