Clone this repo:
  1. f6dd2eb Workaround for flynn cli optionsFirst usage by Jonathan Rudenberg · 10 years ago main master upstream/master
  2. c4d72bb Return Args struct to avoid type assertions by Jonathan Rudenberg · 10 years ago
  3. 7fb3e64 tests(ci): add coverage reporting to tests and upload to by Matt Boersma · 10 years ago
  4. a7ddcdd tests(ci): add golint code checker to config by Matt Boersma · 10 years ago
  5. b74119e docs( add status badge and link to hosted godocs by Matt Boersma · 10 years ago


Build Status Coverage Status GoDoc

An implementation of docopt in the Go programming language.

docopt helps you create beautiful command-line interfaces easily:

package main

import (

func main() {
	  usage := `Naval Fate.

  naval_fate ship new <name>...
  naval_fate ship <name> move <x> <y> [--speed=<kn>]
  naval_fate ship shoot <x> <y>
  naval_fate mine (set|remove) <x> <y> [--moored|--drifting]
  naval_fate -h | --help
  naval_fate --version

  -h --help     Show this screen.
  --version     Show version.
  --speed=<kn>  Speed in knots [default: 10].
  --moored      Moored (anchored) mine.
  --drifting    Drifting mine.`

	  arguments, _ := docopt.Parse(usage, nil, true, "Naval Fate 2.0", false)

docopt parses command-line arguments based on a help message. Don't write parser code: a good help message already has all the necessary information in it.


⚠ Use the alias “docopt-go”. To use docopt in your Go code:

import ""

To install docopt according to your $GOPATH:

$ go get


func Parse(doc string, argv []string, help bool, version string,
    optionsFirst bool, exit ...bool) (map[string]interface{}, error)

Parse argv based on the command-line interface described in doc.

Given a conventional command-line help message, docopt creates a parser and processes the arguments. See for a description of the help message format. If argv is nil, os.Args[1:] is used.

docopt returns a map of option names to the values parsed from argv, and an error or nil.

More documentation for docopt is available at


All tests from the Python version are implemented and passing at Travis CI. New language-agnostic tests have been added to test_golang.docopt.

To run tests for docopt-go, use go test.