Criei um gestor de PATH multiplataforma: pathuni

Oi pessoal do fórum Diolinux!

Sou fã do trabalho do Dio no Youtube. Junto com o Felipe Deschamps, o conteúdo deles me inspirou a finalmente tirar da gaveta uma ideia simples, mas que resolveu um problemão que eu enfrentava: a bagunça do PATH entre sistemas e shells diferentes.

Ferramentas de gestão de dotfiles como o stow não eram suficientes para o meu problema: saltar entre shells multiplos (zsh, Powershell, bash) e sistemas operacionais diferentes (macOS e Linux).

Quero apresentar pra vocês o Pathuni — uma ferramenta de linha de comando escrita em Go que:

  • Lê um arquivo YAML (super simples) com os caminhos que você quer no seu PATH
  • Identifica automaticamente se você está no Linux ou macOS
  • Gera o comando correto para o seu shell (zsh, bash, fish, powershell, etc)
  • Valida se os diretórios realmente existem antes de adicioná-los

O pathuni inclui modos de execução para auxiliar na gestão do PATH que inclui:

  • dry-run: simula a aplicação do Pathuni, mostrando quais diretórios do seu YAML seriam adicionados ao PATH e quais seriam ignorados (porque não existem). Ideal para validar seu arquivo YAML (my_paths.yaml) sem alterar nada no seu sistema.

  • Modo dump: mostra o PATH atual do seu shell, no formato que você quiser (plain, json, yaml). Serve pra comparar ambientes, fazer debug e entender o que já está no seu PATH, e integrar com outros aplicativos via pipes!

Tudo isso com foco em portabilidade e organização.

Meu objetivo é que o Pathuni se torne o complemento perfeito pra quem sincroniza dotfiles entre várias máquinas/sistemas, usa ferramentas como NVM, asdf, podman, e vive naquela confusão de PATH quebrado.

Esse é meu primeiro software público*. Já na casa dos 40, venho de um background corporativo (gestão, arquitetura de solução, CTO), e esse projeto surgiu como um exercício pessoal de:

  • Voltar a programar depois de anos focado só em gestão e arquitetura de solução
  • Refletir sobre como equilibrar código limpo, simples, e ao mesmo tempo bem projetado (SOLID sem burocracia!)
  • Me divertir e aprender resolvendo um problema real

O que vem por aí?

Estou trabalhando em várias ideias para aprimorar o pathuni, incluindo:

  • Mododiff : mostrar a diferença entre o PATH atual e o que o Pathuni geraria

  • Sistema de extras: suporte a ferramentas como NVM, asdf onde o PATH é obtido dinamicamente por outro aplicativo é não tão simples de definir estaticamente via YAML.

  • Função bootstrap: para o Pathuni se auto-injetar no seu .zshrc , .bashrc , ou profile.ps1 , caso você queira

Quer testar?

O projeto está aqui:

https://github.com/pmdci/pathuni

Espero que essa ferramenta seja útil pra quem curte um terminal organizado. Se você quiser testar, dar feedback, apontar bugs ou sugerir melhorias—ou fazer um pull request—vai na fé!

Espero que essa ferramenta seja útil pra quem curte um terminal organizado.

Abraço!

(P.S.: exemplos estão no README do GitHub!)


* Na verdade eu fiz um fork de um pacote de cores do R (RColorbrewer) faz uns anos, mas isso não conta! :wink: Também está no meu github.

1 curtida