Основы 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 — локальная установка не требуется.