commit | f6dd2ebbb31e9721c860cf1faf5c944aa73e3844 | [log] [tgz] |
---|---|---|
author | Jonathan Rudenberg <jonathan@titanous.com> | Thu Sep 11 21:32:26 2014 -0400 |
committer | Jonathan Rudenberg <jonathan@titanous.com> | Thu Sep 11 21:34:29 2014 -0400 |
tree | f0a4616f468718f8041d5f6a88ffae3d4adf91e4 | |
parent | c4d72bb6e19016aebcf611fe19376d46f85f1752 [diff] |
Workaround for flynn cli optionsFirst usage Refs flynn/flynn#193 Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
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
.