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()