package main import ( "os" "fmt" "github.com/mitchellh/cli" ) func main() { app := cli.NewCLI("hello", "0.0.0") app.Args = os.Args[1:] app.Commands = map[string]cli.CommandFactory { "hello sub1": func() (cli.Command, error) { return &Hello{}, nil }, "hello sub2 subsub1": func() (cli.Command, error) { return &Hello{}, nil }, "hello sub2 subsub2": func() (cli.Command, error) { return &Hello{}, nil }, } status, err := app.Run() if err != nil { fmt.Println(err) } os.Exit(status) } type Hello struct { } func (*Hello) Help() string { return "hello" } func (*Hello) Run(args []string) int { fmt.Printf("hello, %v", args) return 0 } func (h *Hello) Synopsis() string { return h.Help() }