#!/bin/bash # Script zum Aktualisieren der Sprachkurse # FΓΌhrt Git-Fetch/Pull aus und aktualisiert die Kurs-Übungen # Findet automatisch die neuesten/relevanten Script-Dateien # Kein "set -e", damit Scripts auch bei Fehlern weiterlaufen kΓΆnnen echo "πŸ”„ Starte Update der Sprachkurse..." echo "" # PrΓΌfe ob wir im richtigen Verzeichnis sind if [ ! -f "package.json" ]; then echo "❌ Fehler: Bitte im Projekt-Root-Verzeichnis ausfΓΌhren" exit 1 fi # 1. Git Fetch und Pull echo "πŸ“₯ FΓΌhre Git Fetch aus..." git fetch echo "πŸ“₯ FΓΌhre Git Pull aus..." git pull echo "" echo "βœ… Git Update abgeschlossen" echo "" # 2. Wechsle ins Backend-Verzeichnis cd backend # 3. Finde relevante Script-Dateien # Suche nach Scripts, die mit Sprachkursen zu tun haben echo "πŸ” Suche nach relevanten Script-Dateien..." echo "" SCRIPT_DIR="scripts" RELEVANT_KEYWORDS=("vocab" "course" "lesson" "exercise" "bisaya" "family" "survival" "grammar" "update" "create") # Finde alle .js-Dateien im scripts-Verzeichnis, die relevante Keywords enthalten # Sortiere nach Γ„nderungsdatum (neueste zuerst) TEMP_SCRIPT_LIST=$(mktemp) find "$SCRIPT_DIR" -name "*.js" -type f | while read -r file; do filename=$(basename "$file" .js) lowercase=$(echo "$filename" | tr '[:upper:]' '[:lower:]') for keyword in "${RELEVANT_KEYWORDS[@]}"; do if [[ "$lowercase" == *"$keyword"* ]]; then echo "$file" break fi done done | xargs ls -t 2>/dev/null > "$TEMP_SCRIPT_LIST" || true SCRIPT_FILES=$(cat "$TEMP_SCRIPT_LIST" 2>/dev/null || true) rm -f "$TEMP_SCRIPT_LIST" if [ -z "$SCRIPT_FILES" ]; then echo "⚠️ Keine relevanten Script-Dateien gefunden" echo "" else echo "πŸ“‹ Gefundene Script-Dateien (nach Γ„nderungsdatum sortiert):" while IFS= read -r script; do if [ -n "$script" ] && [ -f "$script" ]; then echo " - $script" fi done <<< "$SCRIPT_FILES" echo "" # 4. FΓΌhre die Scripts aus echo "▢️ Starte AusfΓΌhrung der Scripts..." echo "" EXECUTED_COUNT=0 FAILED_COUNT=0 while IFS= read -r script; do if [ -n "$script" ] && [ -f "$script" ]; then script_name=$(basename "$script") echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "πŸ“ FΓΌhre aus: $script_name" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if sudo -u yourpart node "$script"; then echo "βœ… $script_name erfolgreich abgeschlossen" EXECUTED_COUNT=$((EXECUTED_COUNT + 1)) else EXIT_CODE=$? echo "❌ $script_name fehlgeschlagen (Exit Code: $EXIT_CODE)" FAILED_COUNT=$((FAILED_COUNT + 1)) # Setze nicht -e, damit weitere Scripts ausgefΓΌhrt werden kΓΆnnen fi echo "" fi done <<< "$SCRIPT_FILES" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "πŸŽ‰ Update der Sprachkurse abgeschlossen!" echo "" echo "πŸ“Š Zusammenfassung:" echo " - Git-Repository aktualisiert" echo " - $EXECUTED_COUNT Script(s) erfolgreich ausgefΓΌhrt" if [ $FAILED_COUNT -gt 0 ]; then echo " - ⚠️ $FAILED_COUNT Script(s) fehlgeschlagen" fi echo "" fi echo "πŸ’‘ Hinweis: Das Frontend muss separat aktualisiert werden mit: ./deploy-frontend.sh"