import os TAMANHO_MAX = 100000 # Limite por arquivo EXCLUIR_PASTAS = {"node_modules", "dist", "build", ".git", ".vite"} def coletar_arquivos(diretorios, extensoes=(".js", ".ts", ".tsx", ".jsx", ".css", ".html", ".json", ".md")): arquivos = [] for diretorio in diretorios: for raiz, pastas, nomes_arquivos in os.walk(diretorio): pastas[:] = [p for p in pastas if p not in EXCLUIR_PASTAS] for nome in nomes_arquivos: if nome.endswith(extensoes): caminho_completo = os.path.join(raiz, nome) arquivos.append(caminho_completo) return arquivos def unir_em_partes(arquivos, prefixo="projeto_parte", limite=TAMANHO_MAX): parte = 1 conteudo_atual = "" total_arquivos = 0 for arquivo in arquivos: try: with open(arquivo, "r", encoding="utf-8") as f_origem: conteudo = f_origem.read() except Exception as e: print(f"⚠️ Erro ao ler {arquivo}: {e}") continue bloco = f"\n\n// === Início de: {arquivo} ===\n{conteudo}\n// === Fim de: {arquivo} ===\n" if len(conteudo_atual) + len(bloco) > limite: nome_saida = f"{prefixo}{parte}.c" with open(nome_saida, "w", encoding="utf-8") as f_saida: f_saida.write(conteudo_atual) print(f"✅ Criado: {nome_saida}") parte += 1 conteudo_atual = "" conteudo_atual += bloco total_arquivos += 1 if conteudo_atual: nome_saida = f"{prefixo}{parte}.c" with open(nome_saida, "w", encoding="utf-8") as f_saida: f_saida.write(conteudo_atual) print(f"✅ Criado: {nome_saida}") print(f"\n🔹 {total_arquivos} arquivos de código processados.") print(f"🔹 Arquivos gerados: {parte}") def main(): diretorio_base = "." # Subpastas principais que queremos incluir (se existirem) componentes_escolhidos = ["src", "public", "config", "utils", "routes", "middleware", "mqtt", "migrations"] diretorios_para_incluir = [os.path.join(diretorio_base, nome) for nome in componentes_escolhidos if os.path.exists(os.path.join(diretorio_base, nome))] # Arquivos individuais importantes na raiz do projeto arquivos_extras = [] for nome in ["vite.config.js", "vite.config.ts", "knexfile.js" , "package.json", "tsconfig.json", "server.js"]: caminho = os.path.join(diretorio_base, nome) if os.path.isfile(caminho): arquivos_extras.append(caminho) # Coleta os arquivos das pastas arquivos_das_pastas = coletar_arquivos(diretorios_para_incluir) # Junta tudo arquivos = arquivos_das_pastas + arquivos_extras unir_em_partes(arquivos) if __name__ == "__main__": main()