Já precisou instalar mais de uma versão de uma ferramenta para determinada situação? Seja porque a sua automatização com Terraform não roda com a última versão ou ainda que um bug com node só acontece com determinada versão. Neste artigo vamos dar a dica que resolve esses e outros problemas com uma ferramenta só.
Essa ferramenta vem como uma alternativa mais genérica a ferramentas especialistas como NVM que gerencia apenas versões do node, neste artigo: Instalando e gerenciando várias versões do Node.js falamos mais dela. Seu objetivo é ter um núcleo bem definido para que a comunidade construa plugins e gerencie versão de praticamente tudo.
Pré Requisitos
Até o momento em que escrevemos o artigo o asdf é compatível apenas com Linux e MacOs. Para usuários de Windows será necessário instalar o WSL.
Para essa instalação será necessário ter em sua máquina tanto o git quanto o curl, caso não tenha basta seguir os comandos abaixo:
sudo apt install curl git jq -y
BashInstalação do ASDF core
Em nossa instação estamos usando o bash no ubuntu rodando via WSL, caso use outro tipo de terminal será necessário modificar a última etapa da instalação.
Para instalação vamos fazer um clone do projeto e fazer checkout na última tag disponível.
export latest_tag=$(curl -s "https://api.github.com/repos/asdf-vm/asdf/tags" | jq -r '.[0].name')
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch $latest_tag
BashLembre-se de fazer isso com o seu usuário que fará uso da ferramenta, para evitar instalação acidental com usuário root.
Após o download, podemos rodar o comando abaixo que irá inserir 2 linhhas no nosso .bashrc:
echo -e "\n. \"\$HOME/.asdf/asdf.sh\"\n. \"\$HOME/.asdf/completions/asdf.bash\"" >> ~/.bashrc
BashCaso não use bash veja aqui outros exemplos.
Após esse comando já podemos sincronizar nosso terminal, seja fechando e abrindo outro ou rodando o comando abaixo:
source ~/.bashrc
BashCom isso, já podemos rodar o asdf e ver sua tela inicial, que será semelhante a esta:
asdf
BashEntendendo o ASDF e Principais comandos
Agora que já temos o asdf instalado vamos entender os principais comandos que serão muito úteis para usar a ferramenta da melhor forma.
Entendendo o escopo de instalação
Independente de qual plugin for usar, tenha em mente que temos 2 escopos de instalação: a local e a global.
- Global: toda instalação global deixará a ferramenta disponível para toda pasta no sistema operacional, incluindo outros usuários.
- Local: Neste caso é criado um arquivo .tool-versions indicando que apenas dentro daquela pasta determinada versão será aplicada
Por exemplo podemos ter em toda máquina o node 20 e apenas em um projeto específico o node 14, fazemos isso usando o escopo global e local.
Anatomia do ASDF
Independentemente do plugin que vamos instalar, ele terá um padrão de comandos aceitos que são os abaixo:
asdf list-all <PLUGIN> # Lista todas as versões disponíveis de um plugin
asdf list <PLUGIN> # Lista todas as versões instaladas do plugin
asdf list all <PLUGIN> <VERSAO> # Lista todas as versões compatíveis com o termo buscado
asdf install <PLUGIN> <VERSAO> # instala a versão de uma ferramenta
asdf uninstall <PLUGIN> <VERSAO> # Desinstala a versão de uma ferramenta
asdf shell <PLUGIN> <VERSAO> # Troca a versão da ferramenta no shell corrente
asdf where <PLUGIN> <VERSAO> # Mostra o diretorio onde o plugin foi instalado
asdf local <PLUGIN> <VERSAO> # Troca a versão da ferramenta somente no diretório corrente
asdf global <PLUGIN> <VERSAO> # Troca a versão globalmente
asdf plugin list # Lista todos os plugins instalados. Adicione --urls para ver o repositório de origem e --refs para saber a versão
asdf plugin list all # Lista todos os plugins disponíveis para instalação
asdf plugin update --all # Atualiza todos os plugins instalados
BashMostramos os principais comandos, para ver todos basta rodar asdf no seu terminal.
Principais plugins e como instalar
Neste bloco, damos uma dica dos principais plugins segundo nosso time. Para ver todos os plugins disponíveis e como fazer a instalação, recomendamos a documentação.
asdf plugin-add java https://github.com/halcyon/asdf-java.git
Bashasdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Bashasdf plugin-add python
Bashasdf plugin-add terraform https://github.com/asdf-community/asdf-hashicorp.git
BashConclusão
Já conhecia essa ferramenta? Conhece outra? Deixe nos comentários que seu comentário pode virar um artigo. Gostaríamos de agradecer ao Eduardo que no vídeo comentou essa ferramenta.