commander-to-markdown
Version:
Render the options of a commander app as markdown
142 lines (80 loc) • 3 kB
Markdown
[](https://coveralls.io/r/studio-b12/commander-to-markdown
) [](https://travis-ci.org/studio-b12/commander-to-markdown
) [](https://david-dm.org/studio-b12/commander-to-markdown
) [
](https://github.com/airbnb/javascript)
<a id="/"></a>
# commander-to-markdown
**Render the options of a [commander](https://github.com/tj/commander.js) app as markdown**
<a id="/installation"></a>
## Installation
```sh
$ npm install commander-to-markdown
```
<a id="/usage"></a>
## Usage
Say you have a [commander](https://github.com/tj/commander.js) app which looks like this:
<p align=right><b><sub>app.js</sub></b></p>
```js
const program = require('commander');
program
.arguments('<address>', 'Address for delivery')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq-sauce', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Pick the type of cheese', 'marble')
.parse(process.argv);
```
`commanderToMarkdown` is pretty much like the `require` function – only instead of the app itself, you get the program’s options rendered as markdown:
<p align=right><b><sub>docs.js</sub></b></p>
```coffee
▸ const commanderToMarkdown = require('commander-to-markdown');
▸ commanderToMarkdown(`${__dirname}/app`);
◂ '''
#### `<address>`
Address for delivery.
#### `-p, --peppers`
Add peppers.
#### `-P, --pineapple`
Add pineapple.
#### `-b, --bbq-sauce`
Add bbq sauce.
#### `-c, --cheese [type]`
Pick the type of cheese. Default: `marble`.
'''
```
<a id="/demo"></a>
## Demo
Here’s how it looks rendered.
<hr>
#### `<address>`
Address for delivery.
#### `-p, --peppers`
Add peppers.
#### `-P, --pineapple`
Add pineapple.
#### `-b, --bbq-sauce`
Add bbq sauce.
#### `-c, --cheese [type]`
Pick the type of cheese. Default: `marble`.
<hr>
This looks especially good when rendered as a manpage with [marked-man](https://github.com/kapouer/marked-man).
<a id="/api"></a>
## Preventing the program from executing
To prevent executing the program, we stub out your `require('.')` and `require('..')` with an empty function which returns an object. If that’s not enough for you, you can pass us the option `programModules`:
```js
commanderToMarkdown(`${__dirname/app}`, { programModules: ['.', './logic'] });
```
<a id="/caveats"></a>
## Caveats
* At the moment we only accept an absolute path.
<a id="/license"></a>
## License
[MIT](./License.md) © [Studio B12](http://studio-b12.de)