Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hildjj/minus-h

Add help generation to APIs created with Node's util.parseArgs function
https://github.com/hildjj/minus-h

help node nodejs parseargs unicode word-wrap

Last synced: 19 days ago
JSON representation

Add help generation to APIs created with Node's util.parseArgs function

Awesome Lists containing this project

README

        

# minus-h

Add help generation to APIs created with Node's
[util.parseArgs()](https://nodejs.org/api/util.html#utilparseargsconfig)
function.

## Installation

```sh
npm install minus-h
```

### API

`parseArgsWithHelp()` is a function that wraps `util.parseArgs()`, adding
a "-h,--help" argument. It takes one or two arguments. The first argument is
an augmented version of the options passed to `util.parseArgs()`, with
descriptions provided for options as well as the command as a whole. The second
optional argument is [options](https://github.com/cto-af/linewrap#options) for
line wrapping. The wrapping width defaults to your terminal width (via
[process.stdout.columns](https://nodejs.org/api/tty.html#writestreamcolumns)).

```js
import {parseArgsWithHelp} from 'minus-h'

parseArgsWithHelp({
description: 'A command that does something very interesting',
argumentName: 'files',
argumentDescription: 'the files to be processed',
allowPositionals: true,
options: {
encoding: {
type: 'string',
argumentName: 'encoding',
description: 'encoding for files read or written',
choices: ["utf8", "base64"]
},
},
}, { width: 80 })
```

`node example.js --help` outputs the following to stderr, before exiting with
exit code 64:

```
Usage: example [options] [files]

A command that does something very interesting

Arguments:
files the files to be processed

Options:
--encoding encoding for files read or written (choices: "utf8",
"base64") Default: "utf8"
-h,--help display help for command
```

The `usage()` function takes the same two parameters. It always writes
help information to output, then exits. It is useful if you've detected a
higher level error condition with your input parameters, and want to re-iterate
the usage information to users as if they had used `--help`.

## Testing

Two more parameters may be added to the configuration parameter:

- `outputStream`: a writable stream to write the help text to. Defaults to
`process.stderr`. Only the `write` method is ever called.
- `exit()`: a function that takes a number that is called when output is
complete. Defaults to `process.exit`.

These options are useful during testing so that you can catch the help text
that would have been written, and prevent your test harness from actually
exiting.

---
[![Tests](https://github.com/hildjj/minus-h/actions/workflows/node.js.yml/badge.svg)](https://github.com/hildjj/minus-h/actions/workflows/node.js.yml)
[![codecov](https://codecov.io/gh/hildjj/minus-h/branch/main/graph/badge.svg?token=QQNMTT4XJQ)](https://codecov.io/gh/hildjj/minus-h)