An elegant CLI framework
To install commando simply do
go get github.com/jobala/commando
Create a CLI instance
cli := commando.NewCli("animals", "A cli app about the animal kingdom")
Commando exposes a declarative api for grouping commands and adding commands to a command group. The code snippet below adds the following commands;
$animals vertebrates warm mammals bear --loudnes <int>
$animals vertebrates warm mammals cow --loudness <int>
cli.NewCommandGroup("vertebrates warm mammals").
WithCommand(commando.Command("bear", Bear)).
WithCommand(commando.Command("cow", Cow)).
func Bear(args BearArgs) {
// do something with BearArgs and print result
}
type BearArgs struct {
Loudness int
}
func Cow(args CowArgs) {
// do something CowArgs and print result
}
type CowArgs struct {
Loudness int
}
The handler function takes a single struct as an argument and the struct fields will be used to create the command's flags. The fields must be public.
To add another command group under vertebrates
, do the following
cli.NewCommandGroup("vertebrates cold").
WithCommand(commando.Command("snake", Snake))
Now you'll have $animals vertebrates cold ...
on top of the initially defined commands
To add another command group under animals, simply do the following
cli.NewCommandGroup("invertebrates").
WithCommand(commando.Command("leech", handlerFunc)).
The snippet above will add $animals invertebrates leech
You can use --help to show the available commands in a command group.
$animals --help
will list available sub command[group]s