Introdução ao Cobra: o que é e para que serve
\nCobra é 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.
\nPara 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
Cobra é usado em projetos conhecidos como Kubernetes, Hugo, Docker (parcialmente), GitHub CLI e muitos outros.
\n\nInstalação do Cobra
\nA 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\nApó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.
Início rápido com Cobra
\nVamos criar uma aplicação CLI simples que exibe uma saudação. Primeiro, inicializamos o projeto com cobra-cli:
cobra-cli init myapp\ncd myapp\nEste comando criará a estrutura de arquivos: main.go, cmd/root.go. Agora, adicionamos o comando hello:
cobra-cli add hello\nDepois disso, editamos o arquivo cmd/hello.go:
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}\nAgora, execute a aplicação:
\ngo run main.go hello --name "Alice"\n# Saída: Hello, Alice!\n\ngo run main.go hello\n# Saída: Hello, World!\n\nPrincipais métodos e funções do Cobra
\n\n1. cobra.Command — criação de comando
\nO que faz: Define um novo comando na aplicação CLI. Este é o bloco de construção principal do Cobra.
\nParâ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
var versionCmd = &cobra.Command{\n Também na biblioteca
Envio de email em Kotlin: bibliotecas e exemplos de código
Internacionalização (i18n) em TypeScript: guia completo
Aprendizado de Máquina em C#: bibliotecas ML.NET e Accord.NET