clean
Version:
clean parses and sanitize argv for node, supporting fully extendable types, shorthands, validatiors and setters.
140 lines (99 loc) • 3.58 kB
Markdown
Clean is small but powerful node.js module that parses and sanitize argv for node, supporting:
- fully extendable types
- shorthands
- validatiors
- setters
```sh
npm install clean --save
```
```js
var clean = require('clean');
```
We can define shorthands with the option `options.shorthands`.
```js
var shorthands = {
c: 'cwd',
n: 'no-recursive'
};
clean({
shorthands: shorthands
}).argv(['node', 'xxx', '-c', 'abc', '-n']);
// The result is:
// {
// cwd: 'abc',
// recursive: false
// }
```
```js
clean({
schema: {
cwd: {
type: require('path')
},
retry: {
type: Boolean
}
}
}).parse(
['node', 'xxx', '--cwd', 'abc', '--retry', 'false'],
function(err, results){
console.log(results.cwd); // the `path.resolved()`d 'abc'
console.log(results.retry === false); // is a boolean, not a string
}
);
```
Validators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.
You could check out the demo located at "example/clean.js". That is a very complicated situation of usage.
```sh
node example/clean.js --username guest
```
- options `Object=`
- schema `Object` schema to define the argv
- offset `Number=` The offset from which the parser should start to parse. Optional. Default to `2`.
- shorthands `Object=` The schema used to clean the given object or the parsred argv
- parallel `Boolean=false` whether should check the argv in parallel, default to `false`
```js
name: {
// If `required == true` and `--name` is not specified in argv, there will be an error
required: true,
validate: function(value){
return /[a-z]/i.test(value);
},
set: function(value){
return value.replace(/^[a-z]/, function(m){
return m.toUpperCase();
});
}
}
```
- required `Boolean`
- default `*` if `required` is `true`, this property will be ignored.
- validate `function(v, is_default)|Array` function for validation, or array of functions
- set `function(v, is_default)|Array` setter function, or array of functions.
There are three methods available for `this` object of validator and setter.
- `this.async()` returns function `done`, and turns the current validator or setter into an asynchronous method. We can also use `done` to define better error messages.
- `this.get(key)` could fetch the value of other properties.
- `this.set(key, value)` could set values of other properties.
- argv `Array` `process.argv` or something like that.
Parses the argument vector, without cleaning the data.
Returns `Object` The parsed object with shorthand rules applied.
- data `Object` The given data.
- callback `function(err, results)`
Cleans the given data according to the `schema`.
Parses argument vector (argv) or something like `process.argv`, and cleans the parsed data according to the `schema`.
This method is equivalent to `c.clean(c.argv(argv), callback)`.
# Advanced Section
## .registerType(type, typeDef)
Registers a custom type.