#!/bin/bash echo "=== YourPart Frontend Update ===" echo "NOTE: .env files will NOT be overwritten" # 1. Zum Frontend-Verzeichnis wechseln cd frontend # 2. Berechtigungen für dist-Verzeichnis korrigieren (falls vorhanden) if [ -d "dist" ]; then echo "Korrigiere Berechtigungen für dist-Verzeichnis..." sudo chown -R $USER:$USER dist/ 2>/dev/null || true fi # 3. Alle generierten Verzeichnisse löschen echo "Lösche alle generierten Verzeichnisse..." rm -rf dist/ rm -rf node_modules/.vite/ rm -rf node_modules/.cache/ # 4. Verwende bestehende .env-Dateien im Zielverzeichnis für Build # Kopiere temporär die bestehende .env vom Ziel, falls vorhanden TEMP_ENV="/tmp/yourpart-frontend-env-$$" if [ -f /opt/yourpart/frontend/.env ]; then echo "Nutze bestehende .env-Datei vom Zielverzeichnis für Build..." sudo cp /opt/yourpart/frontend/.env "$TEMP_ENV" sudo chown $USER:$USER "$TEMP_ENV" cp "$TEMP_ENV" .env elif [ -f .env.production ]; then echo "Nutze .env.production für Build..." cp .env.production .env elif [ -f .env.server ]; then echo "Nutze .env.server für Build..." cp .env.server .env fi # 5. Frontend neu bauen – VITE_* aus Environment übernehmen oder Defaults setzen echo "Baue Frontend neu..." export VITE_API_BASE_URL=${VITE_API_BASE_URL:-https://www.your-part.de} export VITE_DAEMON_SOCKET=${VITE_DAEMON_SOCKET:-wss://www.your-part.de/ws/} export VITE_CHAT_WS_URL=${VITE_CHAT_WS_URL:-wss://www.your-part.de:1235} echo "VITE_API_BASE_URL=$VITE_API_BASE_URL" echo "VITE_DAEMON_SOCKET=$VITE_DAEMON_SOCKET" echo "VITE_CHAT_WS_URL=$VITE_CHAT_WS_URL" npm run build if [ $? -ne 0 ]; then echo "❌ Build fehlgeschlagen!" # Temporäre .env-Datei aufräumen rm -f "$TEMP_ENV" exit 1 fi echo "✅ Build erfolgreich!" # Temporäre .env-Datei aufräumen rm -f "$TEMP_ENV" # 6. Zielverzeichnis erstellen (falls nicht vorhanden) echo "Erstelle Zielverzeichnis..." sudo mkdir -p /opt/yourpart/frontend/dist # 7. Altes Frontend löschen (außer .env-Dateien) echo "Lösche altes Frontend (außer .env-Dateien)..." sudo find /opt/yourpart/frontend/dist -mindepth 1 -exec rm -rf {} + 2>/dev/null || true # 8. Neues Frontend kopieren echo "Kopiere neues Frontend..." sudo cp -r dist/* /opt/yourpart/frontend/dist/ # 9. .env-Dateien NICHT überschreiben - bestehende beibehalten if [ -f /opt/yourpart/frontend/.env ]; then echo "✓ Bestehende .env-Datei wurde beibehalten (nicht überschrieben)" else echo "⚠ Keine .env-Datei im Zielverzeichnis gefunden" # Falls .env im Quellverzeichnis existiert, kopiere sie nur wenn sie im Ziel nicht existiert if [ -f .env ]; then echo "Kopiere .env-Datei (nur wenn nicht vorhanden)..." sudo cp .env /opt/yourpart/frontend/ fi fi # 10. Berechtigungen setzen echo "Setze Berechtigungen..." sudo chown -R www-data:www-data /opt/yourpart/frontend/dist if [ -f /opt/yourpart/frontend/.env ]; then sudo chown www-data:www-data /opt/yourpart/frontend/.env sudo chmod 644 /opt/yourpart/frontend/.env fi sudo chmod -R 755 /opt/yourpart/frontend/dist # 11. Apache neu laden echo "Lade Apache neu..." sudo systemctl reload apache2 echo "" echo "=== Frontend Update abgeschlossen! ===" echo "✅ Frontend neu gebaut" echo "✅ Frontend aktualisiert" echo "✅ .env-Dateien wurden NICHT überschrieben" echo "✅ Apache neu geladen" echo ""