Broccoli: CLI Package for Go
package main
import (
"fmt"
"gopkg.eu.org/broccoli"
)
type Config struct {
_ struct{} `version:"0.0.1" command:"hello" about:"Test App"`
Name string `flag:"name" alias:"n" required:"true" about:"Your name"`
Sub *SubCommand `subcommand:"sub"`
}
type SubCommand struct {
_ struct{} `command:"sub" longabout:"Test Sub Command"`
Name string `flag:"name" alias:"n" required:"true" about:"Your name"`
}
func main() {
var cfg Config
_ = broccoli.BindOSArgs(&cfg)
if cfg.Sub != nil {
fmt.Printf("Hello %s from sub command\n", cfg.Sub.Name)
return
}
fmt.Printf("Hello %s from main command\n", cfg.Name)
}
$ hello --help
hello 0.0.1
Test App
Usage:
hello <COMMAND> [OPTIONS] --name <NAME> [ARGUEMENTS]
Options:
-n, --name Your name (required)
-h, --help Print this help message and exit
Commands:
sub Test Sub Command
$ hello --name World
Hello World from main command
$ hello sub --name World
Hello World from sub command
go get -u gopkg.eu.org/broccoli