A fork of a simple zero dependency command line argument parser for Node.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
3.6 KiB

[![NPM version](https://badge.fury.io/js/argv.png)](http://badge.fury.io/js/argv) ![Test Runner](https://github.com/codenothing/argv/actions/workflows/main.yml/badge.svg) [![Code Climate](https://codeclimate.com/github/codenothing/argv.png)](https://codeclimate.com/github/codenothing/argv)
12 years ago
# argv
`argv` is a simple, zero dependency, command line argument parser for NodeJS. For a more feature-full CLI parser, checkout [Commander.js](https://www.npmjs.com/package/commander) or [Yargs](https://www.npmjs.com/package/yargs)
12 years ago
12 years ago
### Installation
12 years ago
```bash
$ npm install argv
```
12 years ago
### Usage
12 years ago
```js
var argv = require( 'argv' );
var args = argv.option( options ).run();
-> { targets: [], options: {} }
```
12 years ago
### Run
12 years ago
Runs the argument parser on the global arguments. Custom arguments array can be used by passing into this method
```js
// Parses default arguments 'process.argv.slice( 2 )'
argv.run();
// Parses array instead
argv.run(["--option=123", "-o", "123"]);
12 years ago
```
12 years ago
### Options
12 years ago
`argv` is a strict argument parser, which means all options must be defined before parsing starts.
12 years ago
```js
argv.option({
name: "option",
short: "o",
type: "string",
description: "Defines an option for your script",
example: "'script --option=value' or 'script -o value'",
onset: function (args) {
args; // Object of current arguments parsed
},
12 years ago
});
```
12 years ago
### Modules
12 years ago
Modules are nested commands for more complicated scripts. Each module has it's own set of options that
have to be defined independently of the root options.
```js
argv.mod({
mod: 'module',
description: 'Description of what the module is used for',
options: [ list of options ]
});
```
12 years ago
### Types
12 years ago
Types convert option values to useful JS objects. They are defined along with each option.
12 years ago
- `string`: Ensure values are strings
- `path`: Converts value into a fully resolved path.
- `integer | int`: Converts value into an integer
- `float`: Converts value into a float number
- `boolean | bool`: Converts value into a boolean object. 'true' and '1' are converted to true, everything else is false.
- `csv`: Converts value into an array by splitting on comma's.
- `list`: Allows for option to be defined multiple times, and each value added to an array
- `[list|csv],[type]`: Combo type that allows you to create a list or csv and convert each individual value into a type.
12 years ago
12 years ago
```js
argv.option([
{
name: 'option',
type: 'csv,int'
},
{
name: 'path',
short: 'p',
type: 'list,path'
}
]);
// csv and int combo
$ script --option=123,456.001,789.01
-> option: [ 123, 456, 789 ]
12 years ago
// list and path combo
12 years ago
$ script -p /path/to/file1 -p /path/to/file2
-> option: [ '/path/to/file1', '/path/to/file2' ]
12 years ago
```
You can also create your own custom type for special conversions.
```js
argv.type( 'squared', function( value ) {
value = parseFloat( value );
return value * value;
});
argv.option({
name: 'square',
short: 's',
type: 'squared'
});
$ script -s 2
-> 4
```
12 years ago
### Version
12 years ago
Defining the scripts version number will add the version option and print it out when asked.
```js
argv.version( 'v1.0' );
$ script --version
v1.0
```
12 years ago
### Info
12 years ago
Custom information can be displayed at the top of the help printout using this method
```js
argv.info( 'Special script info' );
$ script --help
Special script info
... Rest of Help Doc ...
```
12 years ago
### Clear
12 years ago
If you have competing scripts accessing the `argv` object, you can clear out any previous options that may have been set.
12 years ago
```js
argv.clear().option([new options()]);
12 years ago
```
12 years ago
### Help
12 years ago
`argv` injects a default help option initially and on clears. The help() method triggers the help printout.
12 years ago
```js
argv.help();
```