Каждая команда может дополнительно указывать «подкоманду».Подкоманда имеет тип Command
, что позволяет объединять / составлять команды вместе.
Для достижения чего-то вроде:
cli-tool command1 command2 --command2flag
вы можете иметь структуру команд, такую как:
app := &cli.App{
//...
Commands: []*cli.Command{
{
Name: "command1",
Usage: // ...
Action: //...
SubCommand: []cli.Command{
{
Name: "command2"
Flags: []cli.Flag{
cli.StringFlag{
Name: "command2flag"
// ...
},
},
},
},
},
//...
}
Здесь вы можете видеть, что command2 вложена в подкоманды command1.А флаги для команды2 будут применяться только к команде2.Это пример локального флага.
Глобальные флаги будут применяться к каждой команде и подкоманде.Это может быть полезно для некоторых конфигураций, которые может понадобиться инструменту cli для всех команд.например, адрес сервера для общения и т. д.