Como apenas 4 letras podem mudar a sua vida, ASDF
Salve turma! Ok, confesso que o título esta mais para um click bait, mas confia, essas quatro letras mudaram a minha forma de trabalhar, para melhor... muito melhor.
Qual é o problema afinal?
Atire a primeira pedra o dev que nunca teve que perder tempo instalando diferentes versões de ambientes virtuais de Node, python, rust para cada projeto. Eu trabalho com Python no meu dia-a-dia, então, antigamente, meu dia era repleto de source .venv/bin/activate
ou deactivate
ou ainda vários rm -Rf .venv && python -m venv .venv && pip install -f requirement.txt
. Isso até lembrar de garantir que a versão do python é a mesma que o projeto requeria.
Ah Esse Dê Éfe
O asdf é um gerenciador de versão de ferramentas. Essas ferramentas vão de linguagens de programação a utilitários em geral. Em vez de você ter que ficar gerenciando manualmente as versões de suas ferramentas invidualmente (com venv, virtualenv, nvm, n ou rbenv), o asdf centraliza nele a gestão de versão de tudo que você precisa para criar um ambiente de desenvolvimento para seus projetos.
Como o asdf funciona?
Quando o asdf esta instalado no seu shell, você pode escolher qual ferramenta ele irá gerenciar através da instalação de plugins. Esses plugins usan o conceito de shims para apontar qual versão da ferramenta será usada no contexto corrente. A versão atual é armazenada no arquivo .tool-versions
.
Você ainda pode gerenciar as versões das ferramentas globalmente, no contexto de todo o seu sistema operacional para seu usuário. Essa configuração fica armazenada no arquivo $HOME\.tool-versions
. Parece complicado mas no final das contas é simples.
Instalando o asdf
Para instalar o asdf basta seguir o guia de instalação: https://asdf-vm.com/guide/getting-started.html. Mas a receita de bolo é a seguinte:
- Verifique/instale o
git
ecurl
- Faça do clone do
asdf
core do repositório do github.
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0
- Instale o
asdf
core no shell que você usa. Neste caso, use um dos passos neste link
Feito esses passos o asdf
core esta instalado com sucesso em seu ambiente e pronto para usar. Para testar, execute:
asdf help
Usando o asdf
Agora que o asdf esta instalado com sucesso, podemos passar ao passo de instalar os plugins e as versões que você irá usar em seus projetos.
Você pode conferir todos os plugins suportados pelo asdf executando:
asdf plugin list-all
Você pode ver que tem quase de tudo lá, desde nodejs
, python
até 1-password-cli
e outras ferramentas. Nessa lista, com o tempo, alguns itens irão aparecer com um *
na frente, isso significa que esse plugin já esta instalado no seu ambiente.
Instalando plugins
Para instalar um plugin, vamos usar como exemplo uma instalação de um ambiente python. Neste caso, é necessário instalar o pluging asdf-python
no seu ambiente, para isso, basta executar:
asdf plugin add python
Pronto! Agora o seu asdf sabe como gerenciar versões de python
.
Instalando versões de ferramentas
Para usar uma versão específica de uma ferramenta no seu ambiente, é necessário instalar essa versão dentro da estrutura do asdf. Para isso, usamos a gestão de versões do plugin que iremos trabalhar. No nosso exemplo, o plugin python
, vamos adicionar as versões 3.5.2 e a 3.11.5 do python a estrutura do asdf.
asdf install python 3.5.2
asdf install python 3.11.5
Ao terminar a instalação das versões acima, você já pode usar essas versões em seus projetos. É muito fácil.
Usando as versões instaladas dos plugins.
Para usar as versões instaladas dos plugins em seus projetos, basta usar o comando asdf local
. Esse comando faz a configuração do arquivo .tool-versions
para você e reconfigura todos os atalhos, variáveis de ambiente e o que for mais necessário para habilitar localmente a versão descrita no arquivo de configuração. No nosso exemplo:
~/> mkdir my_project
~/> cd my_project
~/my_project> asdf local python 3.5.2
~/my_project> cat .tool-versions
python 3.5.2
~/my_project> python --version
Python 3.5.2
~/my_project> asdf local python 3.11.5
~/my_project> cat .tool-versions
python 3.11.5
~/my_project> python --version
Python 3.11.5
E isso vale para mais de uma ferramenta, por exemplo, vamos adicionar o gerenciador de projetos python, o poetry
, não pelo pip
mas pelo plugin asdf-poetry
.
~/my_project> asdf plugin add poetry
~/my_project> asdf install poetry 1.6.1
~/my_project> asdf local poetry 1.6.1
~/my_project> cat .tool-versions
python 3.11.5
poetry 1.6.1
~/my_project> poetry --version
Poetry (version 1.6.1)
Caso você queira usar uma versão instalada globalmente em seu usuário, em vez de usar o asdf local
use asdf global
. E todas as configurações irão valer para as pastas onde não existir um arquivo .tool-versions
.
Conclusões
Neste artigo procurei mostrar usos práticos do gerenciador de versões de ferramentas asdf. Gerenciar manualmente diferentes versões de ambientes virtuais, é algo que nenhum dev merece perder tempo. O asdf, oferece um ambiente unificado para gerenciar várias versões de diversas ferramentas de programação e utilitários de forma eficiente. Assim, o asdf se apresenta como uma ferramenta indispensável para otimizar o desenvolvimento de projetos, economizando tempo e aumentando a eficácia do programador. Ou seja, mais qualidade de vida para a turma.
One more thing
Se usar o asdf é bom, mas se combinar o asdf
com o direnv
. Turma, ai o negócio fica muito mais sério. Para quem não conhece o direnv
é uma extensão para o shell que permite carregar e descarregar variáveis de ambiente dependendo do diretório atual. Simples assim, e essa é a forma que eu uso nos meus ambientes. Basta eu entrar no diretório e tudo já esta pronto, carregado e esperando para trabalhar.
Um bom guia de como fazer isso, é neste link aqui, no blog do Michael Cordell:
https://blog.mikecordell.com/2021/12/18/better-project-environment-management-with-direnv-and-asdf/
Comenta ai se vale a pena um post só sobre o direnv
Fonte: https://asdf-vm.com/