cli-argv-util
Version:
Simple utility to parse command line parameters and flags (arguments vector)
92 lines (79 loc) • 4.27 kB
Markdown
//centerkey.com/graphics/center-key-logo.svg align=right width=200 alt=logo>
_Simple utility to parse command line parameters and flags (arguments vector)_
[](https://github.com/center-key/cli-argv-util/blob/main/LICENSE.txt)
[](https://www.npmjs.com/package/cli-argv-util)
[](https://github.com/center-key/cli-argv-util/actions/workflows/run-spec-on-push.yaml)
**cli-argv-util** is called from your `bin/cli.js` file in order to read user
supplied information on the command line and return the flags and parameters
in an easy-to-use structure.
## A) Setup
Install package for node:
```shell
$ npm install cli-argv-util
```
## B) Usage
Place the following code in your **bin/cli.js** file
```javascript
import { cliArgvUtil } from 'cli-argv-util';
const validFlags = ['cd', 'find', 'no-summary'];
const cli = cliArgvUtil.parse(validFlags);
if (cli.invalidFlag)
throw new Error(cli.invalidFlagMsg);
if (cli.flagOn.find)
console.log('You set the --find CLI flag to:', cli.flagMap.find);
if (cli.flagOn.noSummary)
console.log('You enabled the --no-summary CLI option.');
console.log('You supplied', cli.params.length , 'CLI parameter(s).');
```
For a real world example, see:
[ ](https://github.com/center-key/copy-file-util/blob/main/bin/cli.js)
If your CLI tool is named `my-program` and a user runs it like:
```shell
$ my-program about.html --cd=src --no-summary 'Hello World' 777
```
the resulting `cli` object will be:
```javascript
{
flagMap: {
cd: 'src',
},
flagOn: {
cd: true,
find: false,
noSummary: true,
},
invalidFlag: null,
invalidFlagMsg: null,
params: ['about.html', 'Hello World', '777'],
}
```
_**Note:** Single quotes in commands are normalized so they work cross-platform and avoid the errors often encountered on Microsoft Windows._
The `cliArgvUtil.parse()` returns an object of type `Result`:
```typescript
export type StringFlagMap = { [flag: string]: string | undefined };
export type BooleanFlagMap = { [flag: string]: boolean };
export type Result = {
flagMap: StringFlagMap, //map of flag values for each user supplied flag
flagOn: BooleanFlagMap, //map of the enabled status for all valid flags
invalidFlag: string | null, //name of the first invalid flag
invalidFlagMsg: string | null, //error message for the invalid flag
params: string[], //array of parameter values supplied by the user
};
```
See the **TypeScript Declarations** at the top of [cli-argv-util.ts](src/cli-argv-util.ts) for documentation.
<br>
---
**CLI Build Tools for package.json**
- 🎋 [add-dist-header](https://github.com/center-key/add-dist-header): _Prepend a one-line banner comment (with license notice) to distribution files_
- 📄 [cli-argv-util](https://github.com/center-key/cli-argv-util): _Copy or rename a file with optional package version number_
- 📂 [copy-folder-util](https://github.com/center-key/copy-folder-util): _Recursively copy files from one folder to another folder_
- 🪺 [recursive-exec](https://github.com/center-key/recursive-exec): _Run a command on each file in a folder and its subfolders_
- 🔍 [replacer-util](https://github.com/center-key/replacer-util): _Find and replace strings or template outputs in text files_
- 🔢 [rev-web-assets](https://github.com/center-key/rev-web-assets): _Revision web asset filenames with cache busting content hash fingerprints_
- 🚆 [run-scripts-util](https://github.com/center-key/run-scripts-util): _Organize npm package.json scripts into groups of easy to manage commands_
- 🚦 [w3c-html-validator](https://github.com/center-key/w3c-html-validator): _Check the markup validity of HTML files using the W3C validator_
Feel free to submit questions at:<br>
[ ](https://github.com/center-key/cli-argv-util/issues)
[ ](LICENSE.txt)
<img src=https: