0Pricing
Go Academy · Aula

Fundamentos do Cobra

Comando raiz, Run, Args e geração de ajuda

Fundamentos do Cobra é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

O que é o Cobra?

Cobra é a biblioteca Go mais popular para criar aplicações CLI. Ela fornece comandos, sinalizadores, subcomandos, geração de ajuda, conclusão do shell e validação de argumentos.

Instalando o Cobra

Adicione o cobra como dependência e, opcionalmente, use o gerador de CLI:

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

Comando raiz

Toda aplicação Cobra tem um comando raiz. Defina-o com Use, uma descrição Short e uma função 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() }

Estrutura cobra.Command

Campos principais: Use (nome e sinopse do comando), Short (descrição de uma linha), Long (ajuda detalhada), Run (executa o comando), RunE (retorna um erro).

RunE para propagação de erros

Use RunE em vez de Run para retornar erros. O Cobra imprime o erro e encerra automaticamente com um código diferente de zero.

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

Adicionando subcomandos

Crie subcomandos como valores cobra.Command separados e adicione-os ao comando raiz com AddCommand:

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

Estrutura de um projeto Cobra

Organização convencional: diretório cmd/ com um arquivo por subcomando, além de root.go. main.go apenas chama cmd.Execute().

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

Validação de argumentos

Use validadores integrados como cobra.ExactArgs, MinimumNArgs ou uma ValidArgsFunction personalizada:

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

Ajuda gerada automaticamente

O Cobra gera --help / -h para cada comando e também um subcomando help automaticamente. O texto vem de Use, Short, Long e dos sinalizadores.

Conclusão do shell

O Cobra gera, pronto para uso, scripts de conclusão para bash, zsh, fish e PowerShell por meio de rootCmd.GenBashCompletion ou do subcomando integrado completion.

Integração com Viper

Combine Cobra com Viper para gerenciar a configuração: os sinalizadores definidos com o Cobra são vinculados às chaves do Viper, para que os valores possam vir de sinalizadores, variáveis de ambiente ou arquivos de configuração.

Verificação rápida

Qual é a diferença entre cobra.Command.Run e RunE?

Recapitulação: fundamentos do Cobra

Pontos principais:

  • cobra.Command com Use/Short/RunE é o bloco de construção principal
  • rootCmd.AddCommand(subCmd) para comandos hierárquicos
  • cobra.ExactArgs/MinimumNArgs para validação de argumentos
  • A ajuda e a conclusão são geradas automaticamente

Perguntas Frequentes

A aula “Fundamentos do Cobra” é grátis?

Sim — o texto completo de “Fundamentos do Cobra” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Fundamentos do Cobra”?

Comando raiz, Run, Args e geração de ajuda Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Fundamentos do Cobra”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do Cobra
  2. Flags e flags persistentes
  3. Subcomandos e grupos de comandos
  4. Distribuindo ferramentas de CLI
← Voltar para Go Academy