kbsintranett/samle_kode.py

63 lines
2.4 KiB
Python
Raw Permalink Normal View History

2025-12-10 10:03:07 +01:00
import os
# --- INNSTILLINGER ---
# Filtyper vi vil ta med (legg til flere hvis du trenger)
FILTYPER = ['.kt', '.java', '.xml', '.gradle', '.kts', '.pro']
# Mapper vi skal ignorere (viktig for å unngå tusenvis av autogenererte filer)
IGNORER_MAPPER = {
'build', '.gradle', '.idea', '.git', 'captures', 'cxx',
'generated', 'intermediates', 'outputs', 'tmp'
}
OUTPUT_FILNAVN = 'hele_prosjektet.txt'
def samle_filer():
# Finner mappen scriptet kjøres fra
start_mappe = os.getcwd()
print(f"Starter skanning i: {start_mappe}")
print(f"Lagrer til: {OUTPUT_FILNAVN} ...")
teller = 0
with open(OUTPUT_FILNAVN, 'w', encoding='utf-8') as ut_fil:
# Skriv en liten header til Gemini
ut_fil.write("Dette er kildekoden til et Android Studio-prosjekt.\n")
ut_fil.write("Hver fil er separert med overskrifter.\n\n")
# Gå gjennom alle mapper og filer
for root, dirs, files in os.walk(start_mappe):
# Fjern mapper vi vil ignorere slik at skriptet ikke går inn i dem
dirs[:] = [d for d in dirs if d not in IGNORER_MAPPER]
for fil in files:
if any(fil.endswith(ext) for ext in FILTYPER):
# Hopp over selve output-filen og script-filen
if fil == OUTPUT_FILNAVN or fil == os.path.basename(__file__):
continue
full_sti = os.path.join(root, fil)
relativ_sti = os.path.relpath(full_sti, start_mappe)
try:
with open(full_sti, 'r', encoding='utf-8') as inn_fil:
innhold = inn_fil.read()
# Lag en tydelig separator som Gemini forstår
ut_fil.write(f"\n{'='*60}\n")
ut_fil.write(f"FILSTI: {relativ_sti}\n")
ut_fil.write(f"{'='*60}\n")
ut_fil.write(innhold + "\n")
print(f"La til: {relativ_sti}")
teller += 1
except Exception as e:
print(f"Kunne ikke lese {relativ_sti}: {e}")
print(f"\nFerdig! Samlet {teller} filer i '{OUTPUT_FILNAVN}'.")
if __name__ == "__main__":
samle_filer()
input("\nTrykk Enter for å avslutte...")