# coffeenode-docopt

> a command line option parser that will make you smile (improved)

Latest version **0.2.0** (published 2019-08-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install coffeenode-docopt
pnpm add coffeenode-docopt
yarn add coffeenode-docopt
bun add coffeenode-docopt
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2019-08-25 |
| First published | 2014-10-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 86.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | loveencounterflow |
| Keywords | command, options, argument, args, cli, commandline |

## Links

- npm: https://www.npmjs.com/package/coffeenode-docopt
- Repository: https://github.com/loveencounterflow/coffeenode-docopt
- Issues: https://github.com/loveencounterflow/coffeenode-docopt/issues
- npm.io page: https://npm.io/package/coffeenode-docopt

## Dependencies (1)

- [cnd](https://npm.io/package/cnd.md) ^4.6.0

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 0.2.0 (latest) — 2019-08-25
- 0.1.1 — 2015-08-13
- 0.1.0 — 2014-10-11
- 0.0.0 — 2014-10-03

## README

`docopt` – a command line option parser that will make you smile
===============================================================

> [docopt](http://docopt.org) is a language for description of command-line
> interfaces. This is `docopt` implementation in CoffeeScript, that could
> be used for server-side CoffeeScript and JavaScript programs.

Isn't it awesome how modern command-line arguments parsers generate
help message based on your code?!

**Hell no!**  You know what's awesome?  When the option parser *is* generated
based on the help message that you write yourself!  This way you don't need to 
write this stupid repeatable parser-code, and instead can write a beautiful 
help message (the way you want it!), which adds readability to your code.

Now you can write an awesome, readable, clean, DRY code like *this*:

```coffeescript
doc = """
Usage:
  quick_example.coffee tcp <host> <port> [--timeout=<seconds>]
  quick_example.coffee serial <port> [--baud=9600] [--timeout=<seconds>]
  quick_example.coffee -h | --help | --version

"""
{docopt} = require '../docopt'

console.log docopt(doc, version: '0.1.1rc')
```

Hell yeah! The option parser is generated based on `doc` string above, that you
pass to the `docopt` function.



API `{docopt} = require 'docopt'`
---------------------------------

### `options = docopt(doc, {argv: process.argv[2..], help: true, version: null})`

`docopt` takes 1 required argument, and 3 optional keyword arguments:

* `doc` (required) should be a string with the help message, written according 
to rules of the [docopt language](http://docopt.org). Here's a quick example:

    Usage: your_program [options]

    -h --help     Show this.
    -v --verbose  Print more text.
    --quiet       Print less text.
    -o FILE       Specify output file [default: ./test.txt].

* `argv` is an optional argument vector. It defaults to the arguments passed 
* to your program (`process.argv[2..]`). You can also supply it with an array
of strings, as with `process.argv`. For example: `['--verbose', '-o', 'hai.txt']`.

* `help` (default:`true`) specifies whether the parser should automatically
print the help message (supplied as `doc`) in case `-h` or `--help` options
are encountered. After showing the usage-message, the program will terminate.
If you want to handle `-h` or `--help` options manually (the same as other options),
set `help=false`.

* `version` (default:`null`) is an optional argument that specifies the
version of your program. If supplied, then, if the parser encounters
`--version` option, it will print the supplied version and terminate.
`version` could be any printable object, but most likely a string,
e.g. `'2.1.0rc1'`.

**Note:** Although `docopt` automatically handles `-h`, `--help` and `--version` options, 
you still need to mention them in the options description (`doc`) for your users to 
know about them.

The **return** value is an `Object` with properties (giving long options precedence), 
like this:

```javascript
{'--timeout': '10',
 '--baud': '4800',
 '--version': false,
 '--help': false,
 '-h': false,
 serial: true,
 tcp: false,
 '<host>': false,
 '<port>': '/dev/ttyr01'}
```

---
_Source: https://npm.io/package/coffeenode-docopt · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
