
# aufruf ./deploy_sc_beta(prod_v6).sh
# die letzte Zeile der filelist muss mit einem Zeilenumbruch beendet sein
#!/bin/bash

LOCAL_DIR="/Users/icke/WebstormProjects/stolperclean/DEVELOPMENT"
REMOTE_USER="dgdcqqr"
REMOTE_HOST="ssh.cluster029.hosting.ovh.net"
REMOTE_DIR="/home/dgdcqqr/webapp/prod_beta"
FILE_LIST="$LOCAL_DIR/file_list_prod_v5.1.txt"
DRY_RUN=false
FTP_PASS="$FTP_PASS"

# Prüfe, ob $FILE_LIST existiert und nicht leer ist
if [ ! -f "$FILE_LIST" ] || [ ! -s "$FILE_LIST" ]; then
  echo "❌ $FILE_LIST existiert nicht oder ist leer."
  exit 1
fi

# Prüfe, ob alle Dateien existieren
while IFS= read -r file; do
  if [ ! -f "$LOCAL_DIR/$file" ]; then
    echo "❌ Datei fehlt: $LOCAL_DIR/$file"
    exit 1
  fi
done < "$FILE_LIST"

if [ "$DRY_RUN" = true ]; then
  echo "🧪 DRY RUN: Folgende Dateien würden übertragen:"
  while IFS= read -r file; do
    if [ -n "$file" ]; then
      echo "  - $LOCAL_DIR/$file → $REMOTE_DIR/$file"
    fi
  done < "$FILE_LIST"
else
  echo "📤 Starte Upload..."

  # Erstelle ein temporäres Skript für expect
  EXPECT_SCRIPT=$(mktemp)
  cat > "$EXPECT_SCRIPT" <<EOF
spawn sftp -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST"
expect "*password:*"
send "$FTP_PASS\r"
expect "sftp>"
send "cd $REMOTE_DIR\r"
expect "sftp>"
EOF

  # Füge alle put-Befehle hinzu
  while IFS= read -r file; do
    if [ -n "$file" ]; then
      echo "send \"put \\\"$LOCAL_DIR/$file\\\" \\\"$file\\\"\r\"" >> "$EXPECT_SCRIPT"
      echo "expect \"sftp>\"" >> "$EXPECT_SCRIPT"
      echo "puts \"✅ $file erfolgreich übertragen\"" >> "$EXPECT_SCRIPT"
    fi
  done < "$FILE_LIST"

  # Beende die SFTP-Sitzung
  echo "send \"exit\r\"" >> "$EXPECT_SCRIPT"
  echo "expect eof" >> "$EXPECT_SCRIPT"

  # Führe das expect-Skript aus
  expect -f "$EXPECT_SCRIPT"
  rm "$EXPECT_SCRIPT"

  echo "✅ Alle Uploads abgeschlossen."
fi
