• Stars
    star
    147
  • Rank 251,295 (Top 5 %)
  • Language
    CoffeeScript
  • License
    Other
  • Created over 12 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

docopt - A command line option parser that will make you smile.

docopt – command line option parser, that will make you smile

docopt 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? It's 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 that:

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 and 3 optional keyword arguments:

  • doc should be a string with help message, written according to rules of docopt language. Here is a quick example of such a string:

      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; by default it is the argument vector passed to your program (process.argv[2..]). You can supply it with an array of strings (similar to process.argv) e.g. ['--verbose', '-o', 'hai.txt'].

  • help, by 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 (as all other options), set help=false.

  • version, by 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, when docopt is set to automatically handle -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), e.g:

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

More Repositories

1

docopt

Create *beautiful* command-line interfaces with Python
Python
7,939
star
2

docopt.go

A command-line arguments parser that will make you smile.
Go
1,430
star
3

docopt.cpp

C++11 port of docopt
C++
1,041
star
4

docopt.rs

Docopt for Rust (command line argument parser).
Rust
754
star
5

docopts

Shell interpreter for docopt, the command-line interface description language.
Shell
500
star
6

docopt.rb

Parse command line arguments from nothing more than a usage message
Ruby
461
star
7

docopt.net

Port of docopt to .net
C#
352
star
8

docopt.c

C-code generator for docopt language.
Python
320
star
9

docopt.php

Command line argument parser
PHP
297
star
10

docopt.nim

Command line arguments parser that will make you smile (port of docopt to Nim)
Nim
212
star
11

docopt.R

Command-line interface description language for R (http://docopt.org)
R
210
star
12

docopt.java

Java port of docopt
Java
159
star
13

docopt.hs

A command-line interface description language and parser that will make you smile
Haskell
119
star
14

DocOpt.jl

command line arguments parser
Julia
90
star
15

docopt.clj

Clojure implementation of the docopt language.
Clojure
65
star
16

try.docopt.org

Try out docopt in browser (Flask app running on Heroku)
CSS
61
star
17

docopt.swift

A command-line interface description language and parser that will make you smile http://docopt.org/
Swift
52
star
18

docopt.lua

Lua
37
star
19

docopt.scala

Scala implementation of docopt language
Scala
37
star
20

docopt.fs

Docopt for F#
F#
34
star
21

docopt.d

D
30
star
22

docopt.org

The website
Tcl
25
star
23

docopt.tcl

docopt.org for TCL
Tcl
4
star
24

challenge.docopt.org

Challenge docopt site
Python
3
star
25

docopt.rs-old

New Rust port is here:
Rust
2
star