#!/usr/bin/env bash
# Local SFTP deploy — same exclusions as .gitea/workflows/deploy.yml
# Requires: lftp (Git Bash/WSL/Linux/macOS)
# Env: SFTP_HOST, SFTP_USERNAME, SFTP_PASSWORD, SFTP_REMOTE_PATH (or SFTP_REMOTE_PATH_S)

set -eo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

if [ ! -f server.js ] || [ ! -f package.json ]; then
  echo "ERROR: run from WorldCup2026 project root (server.js missing)."
  exit 1
fi

if ! command -v lftp >/dev/null 2>&1; then
  echo "ERROR: lftp not found. Install lftp or run: npm run deploy:node"
  exit 1
fi

SFTP_HOST="${SFTP_HOST:-${SFTP_HOST_S:-}}"
SFTP_USERNAME="${SFTP_USERNAME:-${SFTP_USERNAME_S:-}}"
SFTP_PASSWORD="${SFTP_PASSWORD:-${SFTP_PASSWORD_S:-}}"
DEFAULT_REMOTE="/var/www/html/apps/wc26"
SFTP_REMOTE_PATH="${SFTP_REMOTE_PATH:-${SFTP_REMOTE_PATH_S:-${DEFAULT_REMOTE}}}"

if [ -z "${SFTP_HOST}" ] || [ -z "${SFTP_USERNAME}" ] || [ -z "${SFTP_PASSWORD}" ]; then
  echo "Missing SFTP_HOST / SFTP_USERNAME / SFTP_PASSWORD."
  echo "Set environment variables or create .env.deploy (see .env.deploy.example)."
  exit 1
fi

echo "SFTP mirror → ${SFTP_HOST}:${SFTP_REMOTE_PATH}/"

lftp -u "${SFTP_USERNAME}","${SFTP_PASSWORD}" "sftp://${SFTP_HOST}" -e "
  set sftp:auto-confirm yes;
  set ssl:verify-certificate no;
  set net:timeout 60;
  set net:max-retries 5;
  set net:reconnect-interval-base 5;
  mirror --reverse --delete --verbose --parallel=1 \
    --exclude-glob .git/ \
    --exclude-glob .git/** \
    --exclude-glob .gitea/ \
    --exclude-glob .gitea/** \
    --exclude-glob node_modules/ \
    --exclude-glob node_modules/** \
    --exclude-glob data/ \
    --exclude-glob data/** \
    --exclude-glob .env \
    --exclude-glob .env.* \
    --exclude-glob .env.deploy \
    --exclude-glob '*.log' \
    --exclude-glob .gitignore \
    ./ ${SFTP_REMOTE_PATH}/;
  bye
"

echo ""
echo "Upload done."
echo "On server: cd ${SFTP_REMOTE_PATH} && npm install --production && pm2 restart wc26"
