0Pricing
Go Academy · Урок

Подкоманды и группы команд

Создание многоуровневых иерархий 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы Cobra
  2. Флаги и постоянные флаги
  3. Подкоманды и группы команд
  4. Распространение инструментов CLI
← Назад к Go Academy