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...")
