Cobra para Go: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao Cobra: o que é e para que serve

\n

Cobra é uma biblioteca poderosa para a linguagem de programação Go, projetada para criar interfaces de linha de comando (CLI) modernas. Ela fornece uma API simples e intuitiva para construir aplicações complexas com suporte a comandos aninhados, flags, argumentos e geração automática de ajuda.

\n

Para que serve o Cobra? No desenvolvimento moderno, ferramentas CLI desempenham um papel fundamental: desde utilitários DevOps até ferramentas do dia a dia do desenvolvedor. O Cobra resolve várias tarefas críticas:

\n
    \n
  • Estruturação de comandos: permite criar hierarquias de comandos (por exemplo, app server start, app config set).
  • \n
  • Ajuda automática: gera documentação com base nos seus comandos e flags.
  • \n
  • Processamento flexível de argumentos: suporta argumentos posicionais, flags obrigatórias e opcionais.
  • \n
  • Integração com Viper: combina-se facilmente com a biblioteca Viper para gerenciamento de configuração.
  • \n
  • Velocidade de desenvolvimento: graças ao gerador de código cobra-cli, é possível criar um esqueleto de aplicação em segundos.
  • \n
\n

Cobra é usado em projetos conhecidos como Kubernetes, Hugo, Docker (parcialmente), GitHub CLI e muitos outros.

\n\n

Instalação do Cobra

\n

A instalação do Cobra em um projeto Go é feita da forma padrão através dos módulos Go. Certifique-se de ter o Go versão 1.16 ou superior instalado.

\n
# Inicialização do módulo (se ainda não foi feito)\ngo mod init mycli\n\n# Instalação do Cobra\ngo get -u github.com/spf13/cobra@latest\n\n# Instalação do gerador cobra-cli (opcional, mas recomendado)\ngo install github.com/spf13/cobra-cli@latest
\n

Após a instalação, você pode verificar a versão do Cobra no seu arquivo go.mod. O gerador cobra-cli criará uma estrutura básica de projeto com a configuração correta.

\n\n

Início rápido com Cobra

\n

Vamos criar uma aplicação CLI simples que exibe uma saudação. Primeiro, inicializamos o projeto com cobra-cli:

\n
cobra-cli init myapp\ncd myapp
\n

Este comando criará a estrutura de arquivos: main.go, cmd/root.go. Agora, adicionamos o comando hello:

\n
cobra-cli add hello
\n

Depois disso, editamos o arquivo cmd/hello.go:

\n
package cmd\n\nimport (\n    "fmt"\n    "github.com/spf13/cobra"\n)\n\nfunc init() {\n    rootCmd.AddCommand(helloCmd)\n}\n\nvar helloCmd = &cobra.Command{\n    Use:   "hello",\n    Short: "Exibe uma saudação",\n    Long:  `O comando hello exibe uma saudação personalizada ao usuário.`,\n    Run: func(cmd *cobra.Command, args []string) {\n        name, _ := cmd.Flags().GetString("name")\n        if name == "" {\n            name = "World"\n        }\n        fmt.Printf("Hello, %s!\\n", name)\n    },\n}\n\nfunc init() {\n    helloCmd.Flags().StringP("name", "n", "", "Nome para a saudação")\n}
\n

Agora, execute a aplicação:

\n
go run main.go hello --name "Alice"\n# Saída: Hello, Alice!\n\ngo run main.go hello\n# Saída: Hello, World!
\n\n

Principais métodos e funções do Cobra

\n\n

1. cobra.Command — criação de comando

\n

O que faz: Define um novo comando na aplicação CLI. Este é o bloco de construção principal do Cobra.

\n

Parâmetros:

\n
    \n
  • Use — nome do comando e padrão de uso (por exemplo, "hello [name]")
  • \n
  • Short — descrição breve (exibida na lista de comandos)
  • \n
  • Long — descrição detalhada (exibida na ajuda)
  • \n
  • Run — função executada quando o comando é chamado
  • \n
  • Args — validador de argumentos (por exemplo, cobra.ExactArgs(2))
  • \n
\n
var versionCmd = &cobra.Command{\n                    

Recommendations