Criando e disponibilizando uma aplicação no Homebrew, usando o GoReleaser
O homebrew é um dos principais Gerenciadores de pacotes para macOS, que através da linha de comando te permite instalar centenas de aplicativos de forma fácil e prática. Além disso possui ferramentas para sempre atualizá-lo quando necessário. Por ser um projeto Open Source, ele te possibilita a criar sua própria Formula e assim disponibilizar suas aplicações e utilitários. Vou mostrar a seguir como fazer utilizando o GoReleaser.
No meu dia a dia, volta e meia eu preciso gerar uma chave UUID válida e normalmente recorria para algum site que a gerasse para mim, como por exemplo esse aqui. O problema é que querendo ou não isso acabava quebrando o meu fluxo, pois precisava ir ao browser acessar o site, clicar para copiar o valor e só assim poder utilizá-lo. Eu queria algo mais simples, apenas um comando que eu poderia executar via terminal e boom! Já teria o valor disponível na minha área de transferência. Sendo assim, ao invés de usar alguma outra solução disponível, pensei em escrever minha própria solução.
A aplicação nada mais é do que um executável em Go que gera o UUID e o imprime sem quebrar a linha:
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Print(uuid.New().String())
}
Estando isso disponível em um repositório público do Github, o próximo passo é disponibilizá-lo via homebrew. E é aqui que o GoReleaser entra em cena.
GoReleaser é um utilitário criado pelo caarlos0 para auxiliar na distribuição de aplicações escritas em Go. Dentre suas diversas funcionalidades, ele consegue versionar sua aplicação, gerar executáveis para vários Sistemas Operacionais e disponibilizá-los localmente ou em algum repositório remoto. Além disso, você pode configurar a criação de uma Formula de homebrew e assim poder instalá-lo em apenas uma linha de comando. A sua instalação e configuração são fáceis e estão disponíveis no site oficial.
Com tudo configurado, o último passo foi configurar o arquivo .goreleaser.yaml para gerar a minha Formula homebrew dentro de um repositório do meu github e então executar goreleaser release --rm-dist
brews:
- tap:
owner: eduardohitek
name: homebrew-tap
folder: Formula
homepage: https://github.com/eduardohitek/uuidg
description: Generates an UUID.
nfpms:
- homepage: https://github.com/eduardohitek/uuidg
description: Generates an UUID.
maintainer: Eduardo Hitek <eduardohitek@gmail.com.com>
license: MIT
vendor: HTK Solutions
formats:
- apk
- deb
- rpm
Para efetuar a instalação, basta passar o nome do seu repositório como parâmetro para o comando de instalação do homebrew:
brew install eduardohitek/tap/uuidg
O último passo foi criar uma abreviação do fish terminal para chamar o executável e colocar o seu conteúdo na área de transferência.
abbr -a uuid 'uuidg | pbcopy'