import os
import re

def update_all_headers_from_template():
    """
    Robustna skripta, ki vsebino iz 'layouts/header.html' prebere in z njo
    prepiše VSE <header>...</header> sekcije v vseh ostalih .html datotekah v projektu.
    Eksplicitno izključi datoteki header.html in footer.html.
    """
    project_root = '.'
    header_template_path = os.path.join(project_root, 'layouts', 'header.html')

    # --- KORAK 1: Preberi vsebino nove glave iz datoteke s predlogo ---
    try:
        with open(header_template_path, 'r', encoding='utf-8') as f:
            new_header_content = f.read().strip()
        print(f"Uspešno prebrana vsebina glave iz: {header_template_path}")
    except FileNotFoundError:
        print(f"NAPAKA: Datoteka s predlogo glave ni bila najdena na poti: {header_template_path}")
        print("Prepričajte se, da datoteka obstaja in da skripto zaganjate iz korenske mape projekta ('hermina-merc').")
        return
    except Exception as e:
        print(f"NAPAKA pri branju datoteke s predlogo glave: {e}")
        return

    # --- KORAK 2: Pripravi seznam datotek za izključitev ---
    # Uporabimo os.path.normpath za zanesljivo primerjavo poti ne glede na OS (npr. / vs \)
    excluded_files = [
        os.path.normpath(header_template_path),
        os.path.normpath(os.path.join(project_root, 'layouts', 'footer.html'))
    ]
    print(f"\nDatoteki, ki bosta preskočeni (ker sta predlogi): {excluded_files}")

    # --- KORAK 3: Pripravi robusten regularni izraz ---
    # Ta vzorec bo našel katerokoli <header> oznako, ne glede na atribute, in vso vsebino do </header>
    header_pattern = re.compile(r'<header.*?</header>', re.DOTALL | re.IGNORECASE)

    # --- KORAK 4: Pojdi skozi vse datoteke in posodobi glave ---
    print("\nZačenjam posodabljanje glav v HTML datotekah...")
    
    updated_files_count = 0
    skipped_files_count = 0

    for root, dirs, files in os.walk(project_root):
        # Izključimo mape, ki jih ne želimo pregledovati
        dirs[:] = [d for d in dirs if d not in ['.git', '.vscode', '__pycache__']]
        
        for filename in files:
            if filename.endswith(".html"):
                filepath = os.path.normpath(os.path.join(root, filename))

                # PREVERI, ALI JE DATOTEKA NA SEZNAMU ZA IZKLJUČITEV
                if filepath in excluded_files:
                    continue # Tiho preskoči predloge

                try:
                    with open(filepath, 'r', encoding='utf-8') as f:
                        content = f.read()
                    
                    original_content = content
                    
                    # Zamenjaj obstoječo glavo z novo
                    updated_content, num_replacements = header_pattern.subn(new_header_content, content)
                    
                    if num_replacements > 0:
                        # Preverimo, ali je dejansko prišlo do spremembe v vsebini
                        if updated_content != content:
                            with open(filepath, 'w', encoding='utf-8') as f:
                                f.write(updated_content)
                            
                            print(f"  [OK] Uspešno posodobljena glava v: {filepath}")
                            updated_files_count += 1
                        else:
                            print(f"  [INFO] Glava najdena, vendar je že posodobljena v: {filepath}")
                            skipped_files_count += 1
                    else:
                        print(f"  [POZOR] Glava za zamenjavo ni bila najdena v (preskočeno): {filepath}")
                        skipped_files_count += 1

                except Exception as e:
                    print(f"  [NAPAKA] Pri obdelavi datoteke {filepath}: {e}")

    print("\n-------------------------------------------")
    print("Posodabljanje je končano.")
    print(f"Dejansko posodobljenih datotek: {updated_files_count}")
    print(f"Preskočenih, že posodobljenih ali datotek brez glave: {skipped_files_count}")
    print("-------------------------------------------")

# Zaženemo glavno funkcijo
if __name__ == "__main__":
    update_all_headers_from_template()