40/100 Dias de Golang - Cobra CLI
Table of Contents
#
Cobra CLI
Vamos iniciar o desenvolvimento de um CLI utilizando o Cobra. O Cobra é uma biblioteca poderosa para criar CLIs em Go. Ela é usada por ferramentas populares como o Kubernetes e o Hugo. Vamos iniciar um projeto e adicionar o Cobra.
go mod init novacli
Instalar o cobra
go install github.com/spf13/cobra-cli@latest
Para iniciar o projeto com cobra utilizamos o comando:
cobra-cli init
Isso criará uma estrutura básica com um comando raiz (cmd/root.go).
Vamos adicionar um novo comando:
cobra-cli add olaMundo
Isso cria o arquivo cmd/hello.go
. Vamos mudar um pouco o conteúdo dele:
/*
Copyright © 2025 NAME HERE <EMAIL ADDRESS>
*/
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
var olaMundoCmd = &cobra.Command{
Use: "olaMundo",
Short: "Olá mundo COBRA CLI",
Long: `Nosso primeiro comando utilizando CobraCLI que imprime um Olá Mundo para o usuário!`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Olá Mundo")
},
}
func init() {
rootCmd.AddCommand(olaMundoCmd)
}
Podemos testar rodando:
go run main.go olaMundo
Agora vamos adicionar um flag de nome, para que o Olá Mundo seja personalizado. Veja como é simples:
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
var nome string
var olaMundoCmd = &cobra.Command{
Use: "olaMundo",
Short: "Olá mundo COBRA CLI",
Long: `Nosso primeiro comando utilizando CobraCLI que imprime um Olá Mundo para o usuário!`,
Run: func(cmd *cobra.Command, args []string) {
if nome != "" {
fmt.Printf("Olá Mundo, %s!\n", nome)
} else {
fmt.Println("Use --nome SEU_NOME")
}
},
}
func init() {
rootCmd.AddCommand(olaMundoCmd)
olaMundoCmd.Flags().StringVarP(&nome, "nome", "n", "", "Seu nome")
}
Definimos a variável nome
, fazemos a lógica dentro do Run
e no init definimos a flag olaMundoCmd.Flags().StringVarP(&nome, "nome", "n", "", "Seu nome")
, essa função serve para criar uma flag de linha de comando do tipo string, que pode ser usada com –nome ou -n. O último parâmetro “Seu nome” é um texto de ajuda que aparece quando usar –help.
#
Compilando a CLI
Para gerar o binário:
go build -o olaMundoGolang
Um binário de nome olaMundoGolango
será criado. Depois é só executar:
./olaMundoGolang olaMundo --nome Victor