docopt / docopt.go

A command-line arguments parser that will make you smile.
http://docopt.org/
MIT License
1.43k stars 111 forks source link

ParseArgs fails to compile [--speed=<kn>] #59

Open fenollp opened 6 years ago

fenollp commented 6 years ago

On commit ee0de3b

package main

import (
    "fmt"
    "os"
    "github.com/docopt/docopt-go"
)

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

Usage:
  naval_fate.py ship [--speed=<kn>]
  naval_fate.py -h | --help
  naval_fate.py --version

Options:
  -h --help     Show this screen.
  --version     Show version.
  --speed=<kn>  Speed in knots [default: 10].
`

    {
        // this works
        args, err := docopt.ParseDoc(usage)
        if err != nil { panic(err) }
        fmt.Printf("%+v\n", args)
        fmt.Println(args["--speed"])
    }

    {
        // this panics
        parser := &docopt.Parser{
            HelpHandler:  docopt.PrintHelpOnly,
            OptionsFirst: true,
        }
        args, err := parser.ParseArgs(usage, os.Args[1:], "naval_fate.py")
        if err != nil { panic(err) }
        fmt.Printf("%+v\n", args)
        fmt.Println(args["--speed"])
    }
}
∀ go run docopt_wat.go ship --speed 23
map[ship:true --speed:23 --help:false --version:false]
23
Usage:
  naval_fate.py ship [--speed=<kn>]
  naval_fate.py -h | --help
  naval_fate.py --version
panic: 

goroutine 1 [running]:
main.main()
    /home/pete/docopt_wat.go:36 +0x2f6
exit status 2