#! /bin/bash
set -e

echo "Enter your server username (ex: root)"
read username
echo "Enter server host (ex: 11.111.111.11)"
read ip_address

echo "########### Connecting to server... ###########"
echo "User: ${username}"
echo "Host: ${ip_address}"

# Prepare server
ssh -o StrictHostKeyChecking=no -l "${username}" "${ip_address}" "
  # Kill any stuck dpkg/apt process
  if pgrep -x apt >/dev/null || pgrep -x dpkg >/dev/null; then
      echo '⚠️ Killing existing apt/dpkg process...'
      sudo killall -9 apt apt-get dpkg || true
  fi

  sudo mkdir -p /var/www/quiz && \
  sudo chown -R ${username}:${username} /var/www/quiz && \
  sudo dpkg --configure -a && \
  sudo apt-get update -y && \
  sudo apt-get install -y zip unzip
"

# Check local files
if [ -f "./core/admin.zip" ] && [ -f "./core/standalone-client.zip" ] && [ -f "./deployment.zip" ]; then

    echo "Uploading deployment.zip..."
    scp "./deployment.zip" "${username}@${ip_address}:/var/www/quiz"
    ssh -o StrictHostKeyChecking=no -l "${username}" "${ip_address}" \
    "rm -rf /var/www/quiz/deployment && unzip /var/www/quiz/deployment.zip -d /var/www/quiz/deployment"

    echo "Uploading admin.zip..."
    scp "./core/admin.zip" "${username}@${ip_address}:/var/www/quiz"
    ssh -o StrictHostKeyChecking=no -l "${username}" "${ip_address}" \
    "rm -rf /var/www/quiz/admin && unzip /var/www/quiz/admin.zip -d /var/www/quiz/admin"

    echo "Uploading standalone-client.zip..."
    scp "./core/standalone-client.zip" "${username}@${ip_address}:/var/www/quiz"
    ssh -o StrictHostKeyChecking=no -l "${username}" "${ip_address}" \
    "rm -rf /var/www/quiz/client && unzip /var/www/quiz/standalone-client.zip -d /var/www/quiz/client"

else
  echo "❌ Missing admin.zip, standalone-client.zip, or deployment.zip in ./core or project root"
  exit 1
fi

echo "Checking zx installation..."
if ! command -v zx &> /dev/null; then
    npm i -g zx
fi

echo "✅ Congrats! Deployment script and API files uploaded to the server."
