Skip to main content

Ferramenta para gerar árvore de diretórios com análise de IA

Project description

JAM-Tree

CI Documentation Status

JAM-Tree é uma ferramenta open-source que gera a árvore completa de diretórios de um projeto – da raiz até as subpastas e arquivos – e a exibe de forma organizada. Além disso, ela permite exportar a estrutura para diversos formatos, criar projetos a partir de um template JSON (bootstrapping) e realizar análises de código com IA para gerar resumos concisos.

A ferramenta foi projetada para atender tanto desenvolvedores finais que precisam documentar e entender a estrutura dos seus projetos, quanto para contribuidores que desejam aprimorar e expandir suas funcionalidades.


Tabela de Conteúdos


Recursos

  • Árvore Completa de Diretórios:
    Escaneia recursivamente o diretório do projeto e exibe sua estrutura completa (pastas, subpastas e arquivos) com ordenação: pastas primeiro e, depois, arquivos – ambos em ordem alfabética.

  • Exportação:
    Permite exportar a árvore para os formatos TXT, Markdown (MD) e JSON.

  • Projeto Bootstrapping:
    Cria a estrutura de um novo projeto a partir de um template JSON, com a opção de usar o diretório atual ou criar uma nova pasta raiz.

  • Análise com IA:
    Utiliza a API Gemini para gerar resumos concisos (até 64 caracteres) para cada nó da árvore (arquivos e diretórios).

    • Modo Resumido: (via opção --ai-comments) exibe os resumos junto à árvore.
    • Modo Detalhado: (subcomando analyze) gera uma análise completa de um arquivo.
  • Feedback Visual:
    Mensagens de status interativas e barra de progresso (opção --progress) para informar o usuário durante o escaneamento e análise.


Instalação

Requisitos

  • Python 3.10+
  • Dependências listadas em requirements.txt (inclui click, rich, google-generativeai, etc.)

Instalação via pip (Modo Desenvolvimento)

git clone https://github.com/GitHubJordan/JAM-Tree.git
cd JAM-Tree
pip install -e .

Nota:
Configure a variável de ambiente para a API Gemini:

export AI_ANALYZER_API_KEY_GEMINI="sua_chave_aqui"

Opcionalmente, defina o modelo de IA com:

export AI_ANALYZER_MODEL="gemini-1.5-flash"

Uso

A sintaxe básica do JAM-Tree é:

jam-tree [PATH] [--export FORMAT] [--ignore DIRETÓRIOS] [--create ARQUIVO_JSON] [--no-root] [--ai-comments] [--progress]

Comandos e Opções

  • PATH:
    Diretório a ser escaneado. Se omitido, o diretório atual é utilizado.

  • --export FORMAT:
    Exporta a árvore para um dos formatos: txt, md ou json.

  • --ignore DIRETÓRIOS:
    Lista de diretórios adicionais a ignorar, separados por vírgula.

  • --create ARQUIVO_JSON:
    Cria a estrutura do projeto a partir de um template JSON.

  • --no-root:
    Quando usado com --create, utiliza o diretório atual como raiz, sem criar uma nova pasta.

  • --ai-comments:
    Anexa resumos gerados por IA (até 64 caracteres) a cada nó da árvore.

  • --progress:
    Exibe uma barra de progresso durante a análise dos nós (deve ser usada junto com --ai-comments).

  • Subcomando analyze:

    jam-tree analyze caminho/do/arquivo.py [--export FORMAT]
    

    Gera uma análise detalhada do arquivo e, se a opção --export for utilizada, exporta o relatório (por padrão, para resume_file.txt).


Exemplos de Uso

Exibir a Árvore do Projeto

jam-tree .

Exibir a Árvore com Resumos AI

jam-tree --ai-comments

Exibir a Árvore com Resumos e Barra de Progresso

jam-tree --ai-comments --progress

Exportar a Árvore para Markdown

jam-tree --ai-comments --export md

Criar um Projeto a Partir de um Template

jam-tree --create template.json

Analisar Detalhadamente um Arquivo e Exportar a Análise

jam-tree analyze jam_tree/cli.py --export md

Configuração

Você pode personalizar opções importantes por meio de um arquivo de configuração (config.json). Por exemplo:

config.json

{
  "ignore_dirs": [".git", "venv", "__pycache__"],
  "ai_model": "gemini-1.5-flash",
  "export_format": "txt"
}

E o módulo config.py permite acessar essas configurações:

jam_tree/config.py

import json
import os

CONFIG_FILE = "config.json"
_config = {}

def load_config():
    global _config
    if os.path.exists(CONFIG_FILE):
        try:
            with open(CONFIG_FILE, "r", encoding="utf-8") as f:
                _config = json.load(f)
        except Exception:
            _config = {}

def get_config_option(key: str, default=None):
    return _config.get(key, default)

load_config()

Você pode integrar essas configurações no CLI e nos módulos de análise conforme necessário.


Documentação Completa

Para uma documentação mais detalhada, consulte:

  • CLI_DOCUMENTATION.md – Instruções detalhadas, exemplos de uso e explicação de cada comando.
  • Tutorial.md – Um tutorial passo a passo que ensina como usar o JAM-Tree para:
    • Gerar a árvore do projeto.
    • Exportar a árvore.
    • Criar novos projetos via template JSON.
    • Analisar código com IA.
  • Developer_Docs.md – Documentação voltada para contribuidores, com detalhes de arquitetura, instruções para rodar testes, diretrizes de contribuição, etc.

Contribuindo

Contribuições são muito bem-vindas! Para colaborar:

  1. Faça um fork do repositório.
  2. Crie uma branch para sua funcionalidade ou correção.
  3. Realize commits com mensagens claras e detalhadas.
  4. Envie um pull request com uma descrição completa das mudanças.
  5. Consulte CONTRIBUTING.md para mais orientações.

Roadmap

Versão 0.1.x (Funcionalidades Atuais)

  • Escaneamento e geração da árvore de diretórios.
  • Exportação da árvore em TXT, MD e JSON.
  • Projeto Bootstrapping a partir de um template JSON.
  • Análise de código com IA (resumos concisos e análise detalhada).
  • Feedback visual no CLI (status, barra de progresso).
  • Cache persistente para análises com IA.

Versão 0.2.0 (Funcionalidades Futuras)

  • Empacotamento e Transporte de Projetos: Exportar o projeto inteiro para um arquivo compacto (.jtree ou .tree) e importar posteriormente.
  • StarBuild – JAM-Tree: Criação assistida de projetos via IA, com templates dinâmicos gerados a partir de prompts.
  • Novos Formatos de Exportação: Suporte a exportação para HTML e XML.
  • Configuração via Arquivo: Permitir definir opções por meio de um arquivo de configuração.
  • Interface Gráfica (GUI): Desenvolver uma GUI para facilitar a interação.
  • Testes Automatizados e CI/CD: Ampliar a suíte de testes e configurar pipelines de integração contínua.

FAQ

Q: Preciso configurar algo antes de usar o JAM-Tree?
A: Sim. Configure a variável de ambiente AI_ANALYZER_API_KEY_GEMINI com sua chave de API. Opcionalmente, defina também AI_ANALYZER_MODEL.

Q: Como posso exportar a análise detalhada de um arquivo?
A: Use o subcomando analyze com a opção --export para salvar a análise em um arquivo. Por exemplo:

jam-tree analyze caminho/do/arquivo.py --export md

Q: O que fazer se a análise com IA falhar?
A: Se ocorrer um erro (por exemplo, "429 Resource has been exhausted"), o resumo será exibido como "N/A". O sistema não armazenará erros temporários, permitindo novas tentativas em execuções futuras.


Licença

Este projeto está licenciado sob a MIT License.


Contato

Para dúvidas, sugestões ou contribuições, abra uma issue no repositório ou entre em contato via GitHub.


Conclusão

O JAM-Tree é uma ferramenta robusta que já oferece funcionalidades essenciais para escanear, exportar, criar e analisar a estrutura de projetos, com integração de IA e feedback visual interativo. Com essa documentação atualizada, tanto os usuários finais quanto os contribuidores terão acesso a informações detalhadas e tutoriais que facilitam o uso e a manutenção do projeto.

Estamos comprometidos em seguir nosso ciclo de desenvolvimento em cascata e lançar novas funcionalidades na versão 0.2.0, como o empacotamento completo do projeto e o StarBuild – JAM-Tree.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jam-tree-0.1.7.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jam_tree-0.1.7-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file jam-tree-0.1.7.tar.gz.

File metadata

  • Download URL: jam-tree-0.1.7.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for jam-tree-0.1.7.tar.gz
Algorithm Hash digest
SHA256 a11d9e82701723646b24c882dcfd358443fc34f540a7c6c52b2c4d6fcaae16ac
MD5 e9408a817ca95fd861d80b1c71fcc345
BLAKE2b-256 24776f63ac4367b16be1eda31855cb906b4ad715bdffb93e3b18f32e18689979

See more details on using hashes here.

File details

Details for the file jam_tree-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: jam_tree-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for jam_tree-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e7c601404976b279984af268ee5af7c49cdaa501c8a61e7cbe7d7d893f869346
MD5 dc09cc6d398244e6b78a94089067cd47
BLAKE2b-256 40a6ec58116c691b33567ae2325fc29770677ad19af0d64dda8ee91750375409

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page