#!/usr/bin/env python3
"""
Zet absolute URLs (https://correctvloerverwarming.nl/...) om naar relatieve paden
in alle HTML en CSS bestanden.
"""

import os
import re
from pathlib import Path

BASE_DIR = Path("/home/anisy/projects/websites/correctvloerverwarming/correctvloerverwarming.nl")

DOMAINS = [
    "https://www.correctvloerverwarming.nl",
    "http://www.correctvloerverwarming.nl",
    "https://correctvloerverwarming.nl",
    "http://correctvloerverwarming.nl",
]


def get_relative_prefix(html_file: Path) -> str:
    """Bereken het relatieve pad terug naar de root."""
    depth = len(html_file.relative_to(BASE_DIR).parts) - 1
    if depth == 0:
        return "./"
    return "../" * depth


def fix_html_file(html_path: Path) -> bool:
    """Vervang absolute URLs door relatieve paden in een HTML bestand."""
    try:
        content = html_path.read_text(encoding="utf-8", errors="ignore")
        original = content
        prefix = get_relative_prefix(html_path)

        for domain in DOMAINS:
            # href="https://domain.nl/pad" -> href="./pad"
            content = content.replace(f'href="{domain}/', f'href="{prefix}')
            content = content.replace(f"href='{domain}/", f"href='{prefix}")
            # src="https://domain.nl/pad" -> src="./pad"
            content = content.replace(f'src="{domain}/', f'src="{prefix}')
            content = content.replace(f"src='{domain}/", f"src='{prefix}")
            # action="https://domain.nl/pad" -> action="./pad"
            content = content.replace(f'action="{domain}/', f'action="{prefix}')
            # content="https://domain.nl" (meta canonical etc.)
            content = content.replace(f'content="{domain}/', f'content="{prefix}')

        if content != original:
            html_path.write_text(content, encoding="utf-8")
            return True
    except Exception as e:
        print(f"  Fout bij {html_path}: {e}")
    return False


def fix_css_file(css_path: Path) -> bool:
    """Vervang absolute URLs in CSS bestanden."""
    try:
        content = css_path.read_text(encoding="utf-8", errors="ignore")
        original = content

        for domain in DOMAINS:
            content = content.replace(f"url('{domain}/", "url('../")
            content = content.replace(f'url("{domain}/', 'url("../')
            content = content.replace(f"url({domain}/", "url(../")

        if content != original:
            css_path.write_text(content, encoding="utf-8")
            return True
    except Exception as e:
        print(f"  Fout bij {css_path}: {e}")
    return False


if __name__ == "__main__":
    print("=== Absolute links omzetten naar relatief ===\n")

    html_updated = 0
    for html_path in BASE_DIR.rglob("*.html"):
        if fix_html_file(html_path):
            html_updated += 1

    print(f"HTML: {html_updated} bestanden bijgewerkt.")

    css_updated = 0
    for css_path in BASE_DIR.rglob("*.css"):
        if fix_css_file(css_path):
            css_updated += 1

    print(f"CSS:  {css_updated} bestanden bijgewerkt.")
    print("\nKlaar!")
