#!/bin/bash
# 01_utils.sh - Grundlegende Hilfsfunktionen

# === Logging Funktion ===
log_message() {
    local msg
    msg="$(date '+%Y-%m-%d %H:%M:%S') - $1"
    # Prüft, ob stdout ein Terminal ist, um "tee" nur bei interaktiver Ausführung zu nutzen
    if [ -t 1 ]; then
        echo "${msg}" | tee -a "$LOG_FILE"
    else
        echo "${msg}" >> "$LOG_FILE"
    fi
}

# === Hilfsfunktionen für Platzhalter ===
create_placeholder_file() {
    local fp="$1"
    local dc="$2"
    if [ ! -f "$fp" ]; then
        mkdir -p "$(dirname "$fp")"
        echo -e "$dc" > "$fp"
        log_message "Platzhalterdatei erstellt: $fp"
    fi
}

get_config_value_from_file() {
    local cf="$1"
    local k="$2"
    local dv="${3:-}"
    local v
    if [ ! -f "$cf" ]; then echo "$dv"; return; fi
    # Robuste Extraktion, die Kommentare, Leerzeichen und Anführungszeichen berücksichtigt
    v=$(grep -E "^\s*${k}\s*=" "$cf" | tail -n 1 | sed -e 's/\s*#.*//' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | cut -d'=' -f2- | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/^"//' -e 's/"$//' -e "s/^'//" -e "s/'$//")
    if [ -n "$v" ]; then echo "$v"; else echo "$dv"; fi
}

# === Template Rendering Funktion ===
render_template() {
    local template_path="$1"
    local output_path="$2"
    shift 2
    local replacements=("$@")

    if [ ! -f "$template_path" ]; then
        log_message "FEHLER: Template-Datei nicht gefunden: ${template_path}"
        return 1
    fi

    local template_content
    template_content=$(<"$template_path")

    for ((i=0; i<${#replacements[@]}; i+=2)); do
        local key_name="${replacements[i]}"
        local key="%%${key_name}%%"
        local value="${replacements[i+1]}"
        
        # Manuelle Ersetzung in einer Schleife, um mehrzeilige Inhalte und mehrfache Vorkommen zu unterstützen
        local new_content=""
        while [[ "$template_content" == *"$key"* ]]; do
            new_content+="${template_content%%$key*}${value}"
            template_content="${template_content#*$key}"
        done
        template_content="${new_content}${template_content}"
    done

    echo "$template_content" > "$output_path"
    return $?
}
