Recentemente, em um projeto pessoal utilizando Go, precisei atualizar para uma versão mais recente. Não encontrei online uma maneira fácil e rápida para realizar esse update de forma eficiente e replicável.
Automatizando tarefas com Makefile no Go
Uma prática comum no desenvolvimento em Go é o uso do arquivo Makefile para automatizar a execução de comandos complexos. Por exemplo, ao invés de executar manualmente o comando:
go run main.go
Podemos simplificar usando Makefile, tornando a execução mais rápida no dia a dia:
make run
Criando um Makefile
Para começar, crie um arquivo chamado Makefile
na raiz do seu projeto e instale o make
(certifique-se de instalar a versão correta para o seu sistema operacional). Adicione as seguintes linhas no Makefile
:
run:
go run main.go
Agora quando você executar o comando make run
na raiz do projeto, seu código será executado.
Atualizando a versão do Go com um script
Com o básico do Makefile entendido, podemos criar um comando que atualiza a versão do Go de forma simples e eficiente. Este comando seguirá os passos:
- Verificar a versão atual instalada (necessário já ter o Go instalado).
- Solicitar a versão desejada.
- Se as versões forem diferentes, fazer o download da nova versão.
- Extrair o arquivo baixado.
- Atualizar o
PATH
com a nova versão do Go.
Nota: O script abaixo foi testado no WSL2 com Ubuntu 22.04.
update-go:
@desiredVersion="go1.22.5"; \
currentVersion=$$(go version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'); \
echo "Current version: $$currentVersion"; \
if [ "$$desiredVersion" != "$$currentVersion" ]; then \
echo "Installing $$desiredVersion..."; \
sudo rm -rf /usr/local/go; \
wget --quiet https://go.dev/dl/$$desiredVersion.linux-amd64.tar.gz; \
sudo tar -C /usr/local -xzf $$desiredVersion.linux-amd64.tar.gz; \
rm $$desiredVersion.linux-amd64.tar.gz; \
export PATH=$HOME/go/bin:/usr/local/go/bin:$PATH; \
echo "Done!"; \
go version; \
else \
echo "Go $$desiredVersion is already installed. Skipping..."; \
fi
Conclusão
Agora, sempre que você desejar atualizar a versão do Go, basta alterar o valor da variável desiredVersion
e executar o comando make update-go
. Isso torna o processo de atualização muito mais eficiente e fácil de gerenciar.