#!/bin/bash

# Installiere Dependencies in /opt/ypchat

set -e

TARGET_DIR="/opt/ypchat"
USER="www-data"
GROUP="www-data"
NPM_CACHE_DIR="$TARGET_DIR/.npm-cache"

echo "=========================================="
echo "Dependencies installieren"
echo "=========================================="

# Prüfe ob als root ausgeführt
if [ "$EUID" -ne 0 ]; then 
    echo "FEHLER: Dieses Skript muss als root ausgeführt werden!"
    echo "Bitte führe aus: sudo ./fix-dependencies.sh"
    exit 1
fi

cd "$TARGET_DIR"

# Stelle sicher, dass npm Cache-Verzeichnis existiert
mkdir -p "$NPM_CACHE_DIR"
chown -R $USER:$GROUP "$NPM_CACHE_DIR"

# Lösche node_modules falls vorhanden (für saubere Installation)
echo "Lösche alte node_modules..."
rm -rf node_modules client/node_modules
echo "✓ Alte node_modules gelöscht"

# Installiere Root-Dependencies
echo ""
echo "Installiere Root-Dependencies..."
sudo -u $USER bash -c "cd '$TARGET_DIR' && HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR' && npm install"

if [ $? -ne 0 ]; then
    echo "FEHLER: Installation der Root-Dependencies fehlgeschlagen!"
    exit 1
fi

echo "✓ Root-Dependencies installiert"

# Installiere Client-Dependencies
echo ""
echo "Installiere Client-Dependencies..."
sudo -u $USER bash -c "cd '$TARGET_DIR/client' && HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR' && npm install --legacy-peer-deps"

if [ $? -ne 0 ]; then
    echo "FEHLER: Installation der Client-Dependencies fehlgeschlagen!"
    exit 1
fi

echo "✓ Client-Dependencies installiert"

# Baue Client
echo ""
echo "Baue Client für Production..."
sudo -u $USER bash -c "cd '$TARGET_DIR' && HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR' && npm run build"

if [ $? -ne 0 ]; then
    echo "FEHLER: Build fehlgeschlagen!"
    exit 1
fi

echo "✓ Client gebaut"

# Kopiere dist nach docroot
echo ""
echo "Kopiere gebaute Dateien nach docroot..."
if [ -d "$TARGET_DIR/docroot/dist" ]; then
    rm -rf "$TARGET_DIR/docroot/dist"
fi
cp -r "$TARGET_DIR/client/dist" "$TARGET_DIR/docroot/"
chown -R $USER:$GROUP "$TARGET_DIR/docroot/dist"
echo "✓ Dateien kopiert"

# Setze Besitzer für node_modules
echo ""
echo "Setze Besitzer für node_modules..."
chown -R $USER:$GROUP "$TARGET_DIR/node_modules"
chown -R $USER:$GROUP "$TARGET_DIR/client/node_modules"

echo ""
echo "=========================================="
echo "Dependencies installiert!"
echo "=========================================="
echo ""
echo "Du kannst jetzt den Service starten:"
echo "  sudo systemctl start ypchat"
echo "  sudo systemctl status ypchat"
echo ""

