Criei uma ferramenta CLI em Python pra me ajudar no dia a dia (e pra aprender mais)
Pessoal,
Sabe aquelas tarefas repetitivas que a gente faz quase todo dia como dev? Criar a mesma estrutura de pastas pra um projeto novo, documentar a arquitetura de um diretório que já existe, ou juntar vários arquivos de código pra mandar pra uma IA analisar... Pois é.
Eu venho do mundo do C# e .NET, e sempre resolvi meus problemas por lá. Mas eu queria mergulhar mais fundo em Python, criar algo prático, que fosse útil de verdade. Foi daí que nasceu o caze-tools, um pequeno canivete suíço em linha de comando que estou construindo pra me ajudar nessas pequenas tarefas.
A ideia é simples: ter um comando rápido, que eu chamei de cz, pra automatizar essas rotinas. Queria compartilhar um pouco do que ele já faz.
Pra começar: Criando estruturas de projeto num piscar de olhos com o mkstruct
Quantas vezes você já não teve que criar a mesma estrutura básica de pastas e arquivos __init__.py pra um projeto Python? Eu fazia isso na mão toda vez.
Aí pensei: e se eu pudesse só "desenhar" a estrutura num arquivo de texto e mandar a ferramenta criar tudo pra mim? Melhor, se um llm me desse essa estrutura e eu apenas rodasse um comando?
Foi assim que surgiu o cz mkstruct. Você cria um arquivo, tipo um estrutura.md, com o seguinte conteúdo:
meu-projeto/
├── src/
│ ├── __init__.py
│ └── app/
│ ├── __init__.py
│ └── routes.py
├── tests/
│ └── test_app.py
└── README.md
E aí é só rodar o comando:
cz mkstruct estrutura.md
Pronto! A ferramenta lê esse "desenho" e cria todas as pastas e arquivos vazios no lugar certo. Simples assim. Chega de mkdir e touch repetitivos.
E estou usando isso não apenas para projetos python em que estou estudando, mas estou usando em projetos novos (de estudo também) para asp.net e .net core.
E o caminho inverso? O ls-struct
Beleza, criar a estrutura é útil. Mas e quando você pega um projeto que já existe e precisa documentar a estrutura dele? Fazer aquela árvore de diretórios na mão é um trabalho chato demais.
Pra isso, criei o cz ls-struct. Ele faz exatamente o contrário: lê um diretório e gera aquela representação em árvore.
# Roda na pasta do projeto e salva a saída em um arquivo
cz ls-struct -o documentacao.md
Isso gera um arquivo documentacao.md com a árvore de diretórios bonitinha, pronta pra colar no seu README.md.
Uma jornada de aprendizado (e um convite)
Como eu disse, venho de um background diferente, e esse projeto é, acima de tudo, uma forma de eu aprender Python de verdade, entendendo como empacotar um projeto, como criar uma CLI com a biblioteca click, e como interagir com o sistema de arquivos. É um projeto pra resolver um problema meu, mas também pra estudar.
O código é relativamente simples e está todo aberto no GitHub. Eu adoraria receber feedbacks, sugestões de novos comandos ou até mesmo contribuições de quem estiver a fim de ajudar. Se você tem uma tarefa repetitiva que acha que poderia ser automatizada, abre uma issue lá!
Espero que esse relato inspire alguém. Às vezes, o melhor jeito de aprender uma tecnologia nova é criando uma ferramenta pra coçar uma coceira sua.
O projeto está aqui:
https://github.com/dsscaze/caze-tools
Fiquem à vontade para clonar, testar e dar suas opiniões.
Um grande abraço