import os TAMANHO_MAX = 100000 # Limite por arquivo def coletar_arquivos(diretorios, extensoes=(".c", ".h")): arquivos = [] for diretorio in diretorios: for raiz, pastas, nomes_arquivos in os.walk(diretorio): pastas[:] = [p for p in pastas if p != "build"] # Ignorar "build" 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" # Se ultrapassar o limite, salva em um novo arquivo 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 = "" # reinicia buffer conteudo_atual += bloco total_arquivos += 1 # Salvar o que sobrou 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_main = "main" componentes_escolhidos = [ "rest_api" , "auth" ] diretorios_componentes = [os.path.join("components", nome) for nome in componentes_escolhidos] diretorios_para_incluir = [diretorio_main] + diretorios_componentes arquivos = coletar_arquivos(diretorios_para_incluir) unir_em_partes(arquivos) if __name__ == "__main__": main()