#!/bin/bash

# Prüfe Abhängigkeiten, bevor irgendetwas anderes passiert
./check_dependencies.sh || exit 1

# Lade globale Konfiguration
CONFIG_FILE_PATH="$(dirname "$0")/config.sh"
if [ -f "$CONFIG_FILE_PATH" ]; then
    source "$CONFIG_FILE_PATH"
else
    echo "FEHLER: Konfigurationsdatei config.sh nicht unter ${CONFIG_FILE_PATH} gefunden!"
    exit 1
fi

# === Abgeleitete Haupt-Variablen ===
SCRIPT_BASENAME=$(basename "$0" .sh)
LOG_FILE="${LOG_DIR_BASE}/${SCRIPT_BASENAME}.log"
LOCK_FILE="${LOCK_FILE_BASE_DIR}/${SCRIPT_BASENAME}.lock"
FUNCTIONS_DIR="${SITE_GENERATOR_BASE_PATH}/functions"
GENERATORS_DIR="${FUNCTIONS_DIR}/generators"
CURRENT_YEAR=$(date '+%Y')
CACHE_BUSTER=$(date +%s)
WEB_CONTENT_STATIC_PATH="${WEB_CONTENT_BASE_PATH}/${WEB_CONTENT_STATIC_SUBDIR}"

# --- Lade alle Funktions-Skripte aus den Unterverzeichnissen ---
if [ ! -d "$FUNCTIONS_DIR" ] || [ ! -d "$GENERATORS_DIR" ]; then
    echo "FEHLER: Funktions-Verzeichnisse (${FUNCTIONS_DIR}, ${GENERATORS_DIR}) nicht gefunden!"
    exit 1
fi

# Lade Hilfsfunktionen und dann die Generatoren
for func_file in "$FUNCTIONS_DIR"/*.sh "$GENERATORS_DIR"/*.sh; do
    if [ -f "$func_file" ]; then
        source "$func_file"
    fi
done

# === Hauptlogik für Webseitengenerierung ===
exec 200>"$LOCK_FILE"
flock -n 200 || { echo "$(date '+%Y-%m-%d %H:%M:%S') - Script ${SCRIPT_BASENAME}.sh ist bereits aktiv (Lock: ${LOCK_FILE}). Beende." | tee -a "$LOG_FILE"; exit 1; }
trap 'rm -f "$LOCK_FILE"; log_message "Script ${SCRIPT_BASENAME}.sh beendet."' EXIT

log_message "Script ${SCRIPT_BASENAME}.sh gestartet."

# --- Führe die ausgelagerten Funktionen in der richtigen Reihenfolge aus ---

# 1. Initialisierung: Verzeichnisse und Assets vorbereiten
initialize_site_structure_and_assets

# 2. Globale CSS-Datei generieren
generate_css

# 3. Statische Seiten generieren
generate_static_pages

# 4. Welt-spezifische Seiten generieren
generate_all_world_pages

log_message "Webseiten-Generierung abgeschlossen."
exit 0
