An implementation of docopt in the Go programming language.
docopt helps you create beautiful command-line interfaces easily:
package main
import (
"fmt"
"github.com/docopt/docopt-go"
)
func main() {
usage := `Naval Fate.
Usage:
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
Options:
-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)
fmt.Println(arguments)
}
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 "github.com/docopt/docopt-go"
To install docopt according to your $GOPATH
:
$ go get github.com/docopt/docopt-go
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 https://github.com/docopt/docopt#help-message-format 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 GoDoc.org.
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
.