Подкоманды и группы команд
Создание многоуровневых иерархий CLI
«Подкоманды и группы команд» — бесплатный урок Go Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Иерархические команды
Cobra поддерживает произвольную вложенность: корневая команда → подкоманда → вложенная подкоманда. Пользователи вызывают app resource action, например kubectl get pods.
Добавление подкоманд
Создайте каждую подкоманду как отдельный cobra.Command и зарегистрируйте её у родительской команды:
var userCmd = &cobra.Command{Use: "user", Short: "Manage users"}
var userCreateCmd = &cobra.Command{Use: "create", Short: "Create user", RunE: createUser}
func init() {
userCmd.AddCommand(userCreateCmd)
rootCmd.AddCommand(userCmd)
}Группы отображения (Cobra v1.6+)
Назначайте команды группам отображения в выводе справки, чтобы улучшить организацию:
rootCmd.AddGroup(&cobra.Group{ID: "mgmt", Title: "Management Commands"})
userCmd.GroupID = "mgmt"Псевдонимы
Добавляйте псевдонимы, чтобы пользователи могли применять короткие или альтернативные имена команд:
var userCmd = &cobra.Command{
Use: "user",
Aliases: []string{"users", "u"},
}Скрытые команды
Помечайте отладочные или внутренние команды как скрытые, чтобы они не отображались в справке, но продолжали работать:
cmd.Hidden = trueУстаревшие команды
Помечайте старые команды как устаревшие, чтобы при их использовании выводилось предупреждение:
cmd.Deprecated = "use 'new-command' instead"Хуки до и после выполнения
Используйте PersistentPreRunE и PostRunE для настройки и завершения работы, применяемых к команде и всем её подкомандам, например для инициализации соединения с базой данных перед запуском любой подкоманды.
rootCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error {
return initDB()
}Отключение справки для конечных команд
Cobra по умолчанию добавляет подкоманду help. Отключите её, если в приложении есть собственная команда справки или структура подкоманд может запутать пользователей.
rootCmd.SetHelpCommand(&cobra.Command{Hidden: true})Доступ к родительской команде
Внутри функции Run вызов cmd.Parent() возвращает родительскую команду. Это удобно для доступа к флагам, определённым у родителя.
Обход команд
Используйте rootCmd.Commands(), чтобы перебрать все зарегистрированные подкоманды. Это полезно для программного анализа или автоматической генерации документации.
Генерация страниц руководства и Markdown-документации
Cobra может создавать страницы руководства и документацию в формате Markdown для всех команд с помощью пакета cobra/doc:
doc.GenMarkdownTree(rootCmd, "./docs")Быстрая проверка
Как сделать подкоманду Cobra доступной под несколькими именами?
Повторение: подкоманды и группы
Ключевые моменты:
- AddCommand вкладывает команды в иерархию
- GroupID организует отображение справки в Cobra v1.6+
- Aliases для коротких форм; Hidden для внутренних команд
- PersistentPreRunE для общей настройки подкоманд
Часто задаваемые вопросы
Урок «Подкоманды и группы команд» бесплатный?
Да — полный текст урока «Подкоманды и группы команд» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подкоманды и группы команд»?
Создание многоуровневых иерархий CLI Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Подкоманды и группы команд»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Cobra
- Флаги и постоянные флаги
- Подкоманды и группы команд
- Распространение инструментов CLI