import os import shutil from pathlib import Path # --- KONFIGURASJON --- KILDE_MAPPE = "/opt/teeoff/" EKSPORT_MAPPE = "/opt/teeoff/kode_eksport_1/" TRE_FIL = "/opt/teeoff/fil-tre.txt" # Filtyper vi vil kopiere FILTYPER = ['.py', '.ts', '.tsx'] # Mapper vi IKKE vil ha med i treet eller skanne (sparer tid og rot) IGNORER_MAPPER = ['.git', 'node_modules', '__pycache__', 'kode_eksport', '.next'] def generer_tre_og_kopier(): kilde_sti = Path(KILDE_MAPPE) eksport_sti = Path(EKSPORT_MAPPE) # 1. Opprett eksportmappen hvis den ikke finnes eksport_sti.mkdir(parents=True, exist_ok=True) tre_linjer = [] kopierte_filer = 0 print("Skanner filer og genererer tre...") # 2. Gå gjennom alle mapper og filer for root, dirs, files in os.walk(kilde_sti): # Fjern ignorerte mapper så vi ikke går inn i dem dirs[:] = [d for d in dirs if d not in IGNORER_MAPPER] # Regn ut innrykk basert på hvor dypt vi er i mappestrukturen nivaa = root.replace(KILDE_MAPPE, '').count(os.sep) innrykk = ' ' * 4 * nivaa mappe_navn = os.path.basename(root) # Legg til mappen i treet if mappe_navn: tre_linjer.append(f"{innrykk}📁 {mappe_navn}/") else: tre_linjer.append(f"📁 {kilde_sti.name}/") sub_innrykk = ' ' * 4 * (nivaa + 1) # 3. Gå gjennom filene i mappen for fil in files: tre_linjer.append(f"{sub_innrykk}📄 {fil}") fil_sti = Path(root) / fil # 4. Sjekk om filen har riktig endelse og skal kopieres if fil_sti.suffix in FILTYPER: # Lag et unikt filnavn for å unngå overskriving relativ_sti = fil_sti.relative_to(kilde_sti) nytt_navn = str(relativ_sti).replace(os.sep, '_').replace('.', '_') + '.txt' ny_sti = eksport_sti / nytt_navn # Kopier filen shutil.copy2(fil_sti, ny_sti) kopierte_filer += 1 # 5. Lagre filteret til tekstfilen with open(TRE_FIL, 'w', encoding='utf-8') as f: f.write('\n'.join(tre_linjer)) print(f"\n✅ Ferdig!") print(f"📁 Filtre er lagret i: {TRE_FIL}") print(f"📝 Kopierte {kopierte_filer} kodefiler til: {EKSPORT_MAPPE}") if __name__ == "__main__": generer_tre_og_kopier()