take a look at https://github.com/mkideal/cli
It's declarative, generate help-text/usage for you, and support sub commands, and even sub sub commands. just + my 2c. On Wednesday, April 10, 2019 at 6:59:37 AM UTC-4, mhh...@gmail.com wrote: > > 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.