#!/bin/bash

# Intelligente Konfigurationsdatei-Verwaltung für YourPart Daemon
# Fügt nur fehlende Keys hinzu, ohne bestehende Konfiguration zu überschreiben

set -e

# Farben für Logging
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

CONFIG_FILE="/etc/yourpart/daemon.conf"
TEMPLATE_FILE="daemon.conf"

if [ ! -f "$TEMPLATE_FILE" ]; then
    log_error "Template-Datei $TEMPLATE_FILE nicht gefunden!"
    exit 1
fi

log_info "Verwalte Konfigurationsdatei: $CONFIG_FILE"

if [ ! -f "$CONFIG_FILE" ]; then
    log_info "Konfigurationsdatei existiert nicht, erstelle neue..."
    sudo cp "$TEMPLATE_FILE" "$CONFIG_FILE"
    sudo chown yourpart:yourpart "$CONFIG_FILE"
    sudo chmod 600 "$CONFIG_FILE"
    log_success "Neue Konfigurationsdatei erstellt"
else
    log_info "Konfigurationsdatei existiert bereits, prüfe auf fehlende Keys..."
    
    # Erstelle temporäre Datei mit neuen Keys
    temp_conf="/tmp/daemon.conf.new"
    cp "$TEMPLATE_FILE" "$temp_conf"
    
    added_keys=0
    
    # Füge fehlende Keys hinzu
    while IFS='=' read -r key value; do
        # Überspringe Kommentare und leere Zeilen
        if [[ "$key" =~ ^[[:space:]]*# ]] || [[ -z "$key" ]]; then
            continue
        fi
        # Entferne Leerzeichen am Anfang
        key=$(echo "$key" | sed 's/^[[:space:]]*//')
        
        # Prüfe ob Key bereits existiert
        if ! grep -q "^[[:space:]]*$key[[:space:]]*=" "$CONFIG_FILE"; then
            log_info "Füge fehlenden Key hinzu: $key"
            echo "$key=$value" | sudo tee -a "$CONFIG_FILE" > /dev/null
            ((added_keys++))
        fi
    done < "$temp_conf"
    
    rm -f "$temp_conf"
    
    if [ $added_keys -eq 0 ]; then
        log_success "Keine neuen Keys hinzugefügt - Konfiguration ist aktuell"
    else
        log_success "$added_keys neue Keys hinzugefügt"
    fi
fi

# Setze korrekte Berechtigungen
sudo chown yourpart:yourpart "$CONFIG_FILE"
sudo chmod 600 "$CONFIG_FILE"

log_success "Konfigurationsdatei-Verwaltung abgeschlossen"
