#!/bin/bash

# Fix npm Cache-Berechtigungen für /opt/ypchat

set -e

TARGET_DIR="/opt/ypchat"
USER="www-data"
GROUP="www-data"

echo "=========================================="
echo "npm Cache-Berechtigungen reparieren"
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-npm-cache.sh"
    exit 1
fi

# Erstelle lokales npm Cache-Verzeichnis
NPM_CACHE_DIR="$TARGET_DIR/.npm-cache"
echo "Erstelle lokales npm Cache-Verzeichnis: $NPM_CACHE_DIR"
mkdir -p "$NPM_CACHE_DIR"
chown -R $USER:$GROUP "$NPM_CACHE_DIR"
echo "✓ Cache-Verzeichnis erstellt"

# Setze npm Cache für root (falls nötig)
echo "Setze npm Cache-Konfiguration..."
npm config set cache "$NPM_CACHE_DIR" --global 2>/dev/null || true

# Setze npm Cache für www-data (mit HOME gesetzt, damit npm nicht /var/www/.npmrc verwendet)
echo "Setze npm Cache für $USER..."
sudo -u $USER bash -c "HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR'"
sudo -u $USER bash -c "cd '$TARGET_DIR/client' && HOME='$TARGET_DIR' npm config set cache '$NPM_CACHE_DIR'"

echo "✓ npm Cache konfiguriert"

# Optional: Repariere /var/www/.npm falls vorhanden
if [ -d "/var/www/.npm" ]; then
    echo "Repariere /var/www/.npm Berechtigungen..."
    chown -R $USER:$GROUP "/var/www/.npm" 2>/dev/null || true
    echo "✓ /var/www/.npm repariert"
else
    echo "ℹ /var/www/.npm existiert nicht (ok, wird nicht benötigt)"
fi

# Repariere /var/www/.npmrc falls vorhanden
if [ -f "/var/www/.npmrc" ]; then
    echo "Repariere /var/www/.npmrc Berechtigungen..."
    chown $USER:$GROUP "/var/www/.npmrc" 2>/dev/null || true
    chmod 644 "/var/www/.npmrc" 2>/dev/null || true
    echo "✓ /var/www/.npmrc repariert"
else
    echo "ℹ /var/www/.npmrc existiert nicht (wird erstellt falls nötig)"
    # Erstelle .npmrc in /var/www mit korrekten Berechtigungen
    touch "/var/www/.npmrc" 2>/dev/null || true
    chown $USER:$GROUP "/var/www/.npmrc" 2>/dev/null || true
    chmod 644 "/var/www/.npmrc" 2>/dev/null || true
fi

# Erstelle lokale .npmrc im App-Verzeichnis
echo "Erstelle lokale .npmrc im App-Verzeichnis..."
cat > "$TARGET_DIR/.npmrc" << EOF
cache=$NPM_CACHE_DIR
EOF
chown $USER:$GROUP "$TARGET_DIR/.npmrc"
echo "✓ Lokale .npmrc erstellt"

echo ""
echo "=========================================="
echo "npm Cache repariert!"
echo "=========================================="
echo ""
echo "Du kannst jetzt die Installation fortsetzen:"
echo "  cd $TARGET_DIR"
echo "  sudo -u $USER bash -c \"HOME='$TARGET_DIR' npm run install:all\""
echo ""
echo "Oder verwende das deploy-to-opt.sh Skript erneut."
echo ""

