0Pricing
Go Academy · Урок

Основы Cobra

Корневая команда, Run, Args и создание справки

«Основы Cobra» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Что такое Cobra

Cobra — самая популярная библиотека Go для создания приложений CLI. Она предоставляет команды, флаги, подкоманды, генерацию справки, автодополнение командной оболочки и проверку аргументов.

Установка Cobra

Добавьте cobra в зависимости и при необходимости используйте генератор CLI:

go get github.com/spf13/cobra
// Optional: cobra-cli for scaffolding
go install github.com/spf13/cobra-cli@latest
cobra-cli init myapp

Корневая команда

У каждого приложения Cobra есть корневая команда. Определите её с помощью Use, краткого описания Short и функции Run:

var rootCmd = &cobra.Command{
    Use:   "myapp",
    Short: "My awesome CLI",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("Hello from root!")
    },
}
func main() { rootCmd.Execute() }

Структура cobra.Command

Основные поля: Use (имя команды и краткий синтаксис), Short (однострочное описание), Long (подробная справка), Run (выполняет команду), RunE (возвращает ошибку).

RunE для передачи ошибок

Используйте RunE вместо Run, чтобы возвращать ошибки. Cobra автоматически выводит ошибку и завершает работу с ненулевым кодом.

var rootCmd = &cobra.Command{
    RunE: func(cmd *cobra.Command, args []string) error {
        return doWork()
    },
}

Добавление подкоманд

Создавайте подкоманды как отдельные значения cobra.Command и добавляйте их в корневую команду с помощью AddCommand:

var serveCmd = &cobra.Command{
    Use:   "serve",
    Short: "Start the server",
    RunE:  runServe,
}
func init() { rootCmd.AddCommand(serveCmd) }

Структура проекта Cobra

Стандартная структура: каталог cmd/ с отдельным файлом для каждой подкоманды и файл root.go. Файл main.go только вызывает cmd.Execute().

cmd/
  root.go    // rootCmd definition
  serve.go   // serveCmd
  migrate.go // migrateCmd
main.go

Проверка аргументов

Используйте встроенные средства проверки, например cobra.ExactArgs, MinimumNArgs или собственную ValidArgsFunction:

var cmd = &cobra.Command{
    Args: cobra.ExactArgs(2),
    RunE: func(cmd *cobra.Command, args []string) error {
        fmt.Println(args[0], args[1])
        return nil
    },
}

Автоматически генерируемая справка

Cobra автоматически создаёт --help / -h для каждой команды и подкоманду help. Текст берётся из Use, Short, Long и флагов.

Автодополнение командной оболочки

Cobra из коробки создаёт сценарии автодополнения для bash, zsh, fish и PowerShell через rootCmd.GenBashCompletion или встроенную подкоманду completion.

Интеграция с Viper

Объединяйте Cobra с Viper для управления конфигурацией: флаги, определённые в Cobra, связываются с ключами Viper, поэтому значения могут поступать из флагов, переменных окружения или конфигурационных файлов.

Быстрая проверка

В чём разница между cobra.Command.Run и RunE?

Повторение: основы Cobra

Ключевые моменты:

  • cobra.Command с Use/Short/RunE — основной строительный блок
  • rootCmd.AddCommand(subCmd) для иерархии команд
  • cobra.ExactArgs/MinimumNArgs для проверки аргументов
  • Справка и автодополнение создаются автоматически

Часто задаваемые вопросы

Урок «Основы Cobra» бесплатный?

Да — полный текст урока «Основы Cobra» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы Cobra»?

Корневая команда, Run, Args и создание справки Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы Cobra»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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