Carregando agora

Como Criar Aplicações CLI com Golang e Cobra: Guia Definitivo

Ilustração de terminal CLI com o mascote Gopher segurando uma cobra, destacando o uso de Golang e Cobra para criar aplicações CLI.

Ah, criar aplicações CLI com Golang… Porque quem quer interface bonitinha quando você pode resolver tudo com uma linha de comando, não é mesmo? Se você é daquele tipo de dev que ama a simplicidade brutal e quer fazer coisas rápido e sem frescura, tá no lugar certo. Cola aqui que o Glaubin vai te mostrar como fazer isso com estilo e uns toques de sarcasmo.

Por que criar aplicações CLI com Golang?

Primeiro, vamos ser sinceros: CLIs são pra quem gosta de controle. Não tem “próximo, próximo, finalizar”, e sim escreve o comando certo ou chora. E por que usar Golang? Porque ele é rápido, objetivo e tão simples que até parece coisa de outro mundo. E com a biblioteca Cobra, você pode fazer uma CLI digna de respeito em minutos.

Cobra: A chave para criar aplicações CLI com Golang

Não, não é a cobra do zoológico. Cobra é uma biblioteca escrita em Go para criar CLIs. Ela pega na sua mão, te dá todas as ferramentas e ainda organiza seu código. Parece bom demais para ser verdade? Bem-vindo ao mundo da programação decente.

Bora Meter a Mão na Massa?

1. Configurando o Ambiente

Antes de tudo, certifique-se que você tem Go instalado. Se não tem, você está perdoado… por enquanto. Vai no site oficial do Go e resolve isso. Depois, crie seu projeto e inicialize o Go Modules:

mkdir minha-cli
cd minha-cli
go mod init github.com/seuuser/minha-cli

Agora, instale a biblioteca Cobra. É tipo botar pimenta na comida: essencial.

go get -u github.com/spf13/cobra@latest
go get -u github.com/spf13/cobra/cobra@latest

2. Estruturando seu projeto para criar aplicações CLI com Golang

Aqui vai a parte que é pura mágica. Vamos criar a base do nosso CLI:

cobra init --pkg-name github.com/seuuser/minha-cli

Isso gera uma estrutura de diretórios tão organizada que você vai até esquecer o caos do seu código legado:

.
├── cmd/
   └── root.go
└── main.go

Abra o arquivo cmd/root.go e personalize. Algo assim:

var rootCmd = &cobra.Command{
    Use:   "minha-cli",
    Short: "Uma CLI poderosa com Go e Cobra",
    Long:  `Esta é uma aplicação de linha de comando criada em Go. Nada de firula, só eficiência.`,
}

3. Adicionando comandos ao criar aplicações CLI com Golang

Agora vamos criar um comando chamado http para subir um servidor web. Rode:

cobra add http

Isso cria o arquivo cmd/http.go. Edite assim:

package cmd

import (
    "fmt"
    "github.com/spf13/cobra"
    "net/http"
)

var port string

var httpCmd = &cobra.Command{
    Use:   "http",
    Short: "Sobe um servidor HTTP",
    Run: func(cmd *cobra.Command, args []string) {
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            fmt.Fprintln(w, "Servidor rodando de boas! Bora trabalhar.")
        })

        fmt.Printf("Servidor rodando na porta %s\n", port)
        http.ListenAndServe(":"+port, nil)
    },
}

func init() {
    rootCmd.AddCommand(httpCmd)
    httpCmd.Flags().StringVarP(&port, "port", "p", "8080", "Porta para o servidor")
}

É isso aí. Nós configuramos um parâmetro --port para definir a porta do servidor. Agora, você tem controle até sobre onde ele vai rodar. Pés no chão, né?

4. Testando a CLI

Roda o comando e confere:

go run main.go http --port 9090

Depois, dá um curl ou abre no navegador:

curl localhost:9090

Se aparecer “Servidor rodando de boas! Bora trabalhar.”, pode se considerar um sucesso.

5. Criando um Comando de Cálculo

Porque somar no código é mais divertido que abrir a calculadora. Crie o comando calc:

cobra add calc

Edite cmd/calc.go assim:

package cmd

import (
    "fmt"
    "github.com/spf13/cobra"
    "strconv"
)

var a, b float64

var calcCmd = &cobra.Command{
    Use:   "calc",
    Short: "Realiza a soma de dois números",
    Run: func(cmd *cobra.Command, args []string) {
        result := a + b
        fmt.Printf("A soma de %.2f e %.2f é %.2f\n", a, b, result)
    },
}

func init() {
    rootCmd.AddCommand(calcCmd)
    calcCmd.Flags().Float64VarP(&a, "a", "x", 0, "Primeiro número")
    calcCmd.Flags().Float64VarP(&b, "b", "y", 0, "Segundo número")
}

Agora teste:

go run main.go calc -x 10 -y 20

Se retornar algo tipo “A soma de 10.00 e 20.00 é 30.00”, você fez tudo certo.

Conclusão

E aí está. Você agora sabe criar aplicações CLI com Golang como um(a) verdadeiro(a) ninja dos terminais. Nada de frescura, nada de interface gráfica, só o que importa: eficiência e funcionalidade. Agora, vai lá e crie sua própria ferramenta que todo mundo vai querer clonar no GitHub. Só não esquece de me dar os créditos, beleza?

Angular performance Angular Signals Apps Multiplataforma automação de tarefas Backend Boas Práticas boas práticas Git controle de versão desenvolvedores desenvolvimento backend Desenvolvimento de Software Desenvolvimento Frontend Desenvolvimento Mobile Desenvolvimento Web desenvolvimento ágil devops dicas para devs escalabilidade ferramentas de Git ferramentas de programação Front-end Git Hooks integração contínua inteligência artificial JavaScript Linguagens de Programação Media Queries mercado de tecnologia Mercado de Trabalho Tech Node.js produtividade dev Programação Programação Orientada a Objetos programação para iniciantes programação reativa Python React React Suspense Rust Tecnologia Trunk-Based Development web development workflow Git workflows Git

Publicar comentário

O que temos aqui?