looks lovely, how do you manage sub commands ? On Wednesday, April 10, 2019 at 2:24:21 AM UTC+2, Paul Borman wrote: > > I have never been quite happy with the flags packages available for Go, > including the standard flags package as well as my own getopt packages (v1 > and v2). They are just too cumbersome to use. I finally have come up with > a solution that I like. github.com/pborman/options > <https://godoc.org/github.com/pborman/options> > > The command line options are declared as a simple structure with struct > tags, for example: > > // Declare the command line flags. The help information does not need to > line up, > // I just think it looks prettier this way. > var opts = struct { > Help options.Help `getopt:"--help display help"` > Name string `getopt:"--name=NAME name of the widget"` > Count int `getopt:"--count -c=COUNT number of widgets"` > Verbose bool `getopt:"-v be verbose"` > Timeout time.Duration `getopt:"--timeout duration of run"` > }{ > Name: “gopher”, > } > > func main() { > // Assign args to the positional parameters. > args := options.RegisterAndParse(&opts) > > fmt.Printf(“Name is: %s\n”, opts.Name) > … > } > > The command usage displayed by passing —help to the above program will > look something like: > > Usage: prog [-v] [-c COUNT] [--help] [--name NAME] [--timeout value] > [parameters ...] > -c, --count=COUNT number of widgets > --help display help > --name=NAME name of the widget [gopher] > --timeout=value > duration of run > -v be verbose > > The package is built on top of the github.com/pborman/getopt/v2 > <https://godoc.org/github.com/pborman/getopt/v2> package and as such they > can be used together. The options package also supports reading command > line arguments from a file by using the options.Flags type. > > I hope that some of you might find this helpful in writing command line > programs. > > -Paul >
-- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.