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 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 oznako, ne glede na atribute, in vso vsebino do
header_pattern = re.compile(r'', 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()