import os
import shutil
import re

def prestrukturiraj_spletno_stran():
    """
    Skripta prestrukturira spletno stran tako, da vsako .html datoteko
    (razen index.html v korenu) premakne v svojo mapo in jo preimenuje v index.html.
    Na koncu posodobi vse povezave v vseh HTML datotekah.
    """
    korenski_direktorij = '.'
    datoteke_za_obdelavo = []
    mapa_povezav = {}

    # --- FAZA 1: Najdi vse .html datoteke, ki jih je treba premakniti ---
    print("--- Faza 1: Iskanje HTML datotek za prestrukturiranje ---")
    for pot, mape, datoteke in os.walk(korenski_direktorij):
        # Izognemo se sistemskim in skritim mapam
        if any(part in pot for part in ['.git', '.vscode', '__pycache__']):
            continue

        for datoteka in datoteke:
            # Obdelamo samo .html datoteke, ki niso že index.html
            if datoteka.endswith('.html') and datoteka != 'index.html':
                ime_brez_koncnice = datoteka[:-5]
                stara_pot = os.path.join(pot, datoteka)
                
                # Posebna obravnava za "omeni.html", kot je bilo zahtevano
                if ime_brez_koncnice == "omeni":
                    ime_nove_mape = "o-meni"
                else:
                    ime_nove_mape = ime_brez_koncnice

                nova_mapa_pot = os.path.join(pot, ime_nove_mape)
                nova_datoteka_pot = os.path.join(nova_mapa_pot, 'index.html')

                datoteke_za_obdelavo.append({
                    'stara_pot': stara_pot,
                    'nova_mapa_pot': nova_mapa_pot,
                    'nova_datoteka_pot': nova_datoteka_pot
                })
                # Shranimo preslikavo za kasnejšo zamenjavo povezav
                mapa_povezav[datoteka] = ime_nove_mape + '/'

    if not datoteke_za_obdelavo:
        print("Ni datotek za prestrukturiranje. Postopek končan.")
        return

    # --- FAZA 2: Ustvari mape, premakni in preimenuj datoteke ---
    print("\n--- Faza 2: Ustvarjanje map in prestavljanje datotek ---")
    for info in datoteke_za_obdelavo:
        stara_pot = info['stara_pot']
        nova_mapa_pot = info['nova_mapa_pot']
        nova_datoteka_pot = info['nova_datoteka_pot']
        
        try:
            os.makedirs(nova_mapa_pot, exist_ok=True)
            print(f"  -> Ustvarjena mapa: {nova_mapa_pot}")
            
            shutil.move(stara_pot, nova_datoteka_pot)
            print(f"  -> Datoteka '{stara_pot}' uspešno prestavljena v '{nova_datoteka_pot}'")
        except Exception as e:
            print(f"NAPAKA pri prestavljanju '{stara_pot}': {e}")
            
    # --- FAZA 3: Posodobi vse povezave v vseh HTML datotekah ---
    print("\n--- Faza 3: Posodabljanje povezav v vseh HTML datotekah ---")
    vse_html_datoteke = []
    for pot, _, datoteke in os.walk(korenski_direktorij):
        if any(part in pot for part in ['.git', '.vscode', '__pycache__']):
            continue
        for datoteka in datoteke:
            if datoteka.endswith('.html'):
                vse_html_datoteke.append(os.path.join(pot, datoteka))

    for html_datoteka in vse_html_datoteke:
        try:
            with open(html_datoteka, 'r', encoding='utf-8') as f:
                vsebina = f.read()
            
            originalna_vsebina = vsebina
            
            # Zamenjaj povezave na podlagi ustvarjene mape
            for stara_datoteka, nova_pot in mapa_povezav.items():
                # Regularni izraz, ki najde href="...stara_datoteka.html" in ga zamenja
                vzorec = re.compile(f'href=(["\'])([^"\'#?]*?){re.escape(stara_datoteka)}(["\'])')
                vsebina = vzorec.sub(f'href=\\1\\2{nova_pot}\\3', vsebina)

            # Posebna obravnava za glavno datoteko index.html, da postane relativna pot "/"
            vzorec_index = re.compile(f'href=(["\'])index.html(["\'])')
            vsebina = vzorec_index.sub('href=\\1/\\2', vsebina)

            if vsebina != originalna_vsebina:
                with open(html_datoteka, 'w', encoding='utf-8') as f:
                    f.write(vsebina)
                print(f"  -> Posodobljene povezave v datoteki: {html_datoteka}")

        except Exception as e:
            print(f"NAPAKA pri posodabljanju povezav v '{html_datoteka}': {e}")

# Zaženi glavno funkcijo
if __name__ == "__main__":
    prestrukturiraj_spletno_stran()
    print("\nPrestrukturiranje spletne strani je končano.")