#!/usr/bin/env bash set -euo pipefail TARGET_DIR="${1:?Zielverzeichnis fehlt: ./update.sh }" shift || true SKIP_BACKEND="0" SKIP_FRONTEND="0" while [[ $# -gt 0 ]]; do case "$1" in --skip-backend) SKIP_BACKEND="1" ;; --skip-frontend) SKIP_FRONTEND="1" ;; *) echo "Unbekannte Option: $1" >&2 echo "Verwendung: ./update.sh [--skip-backend] [--skip-frontend]" >&2 exit 1 ;; esac shift done echo "=== YourPart Update Script ===" echo "Ziel-Slot: $TARGET_DIR" echo "Aktualisiert die Anwendung, ohne .env-Dateien zu überschreiben" echo "Skip Backend: $SKIP_BACKEND" echo "Skip Frontend: $SKIP_FRONTEND" echo "" # Prüfen ob wir im richtigen Verzeichnis sind if [ ! -f "package.json" ]; then echo "Error: Please run this script from the YourPart3 root directory" exit 1 fi # Sicherstellen, dass wir wirklich auf main sind CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" if [ "$CURRENT_BRANCH" != "main" ]; then echo "Error: current branch is '$CURRENT_BRANCH', expected 'main'" exit 1 fi # Remote-Stand holen git fetch origin main # Arbeitsbaum hart auf origin/main setzen git reset --hard origin/main # Optional: unversionierte Build-Artefakte entfernen git clean -fd # Prüfen ob sudo verfügbar ist if ! command -v sudo >/dev/null 2>&1; then echo "Error: sudo is required but not installed" exit 1 fi if [[ "$SKIP_BACKEND" == "1" ]]; then echo "" echo "=== Backend-Update übersprungen (--skip-backend) ===" else echo "" echo "=== Updating Backend ===" ./update-backend.sh "$TARGET_DIR" fi if [[ "$SKIP_FRONTEND" == "1" ]]; then echo "" echo "=== Frontend-Build/Update übersprungen (--skip-frontend) ===" else echo "" echo "=== Building and Updating Frontend ===" ./update-frontend.sh "$TARGET_DIR" fi echo "" echo "Link backend .env" ln -s backend/.env .env echo "" echo "=== Update Completed! ===" echo "Your application has been updated." echo "" echo "To check logs:" echo " Backend: sudo journalctl -u yourpart.service -f" echo " Apache: sudo tail -f /var/log/apache2/yourpart.*.log"