#!/usr/bin/env bash
set -euo pipefail

# ── Colours ───────────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
BLUE='\033[0;34m'; CYAN='\033[0;36m'; BOLD='\033[1m'; NC='\033[0m'

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

ok()   { echo -e "${GREEN}  ✓ $1${NC}"; }
fail() { echo -e "${RED}  ✗ $1${NC}"; exit 1; }
info() { echo -e "  ${CYAN}$1${NC}"; }

# ── Load .env ─────────────────────────────────────────────────────────────────
[[ ! -f "$SCRIPT_DIR/.env" ]] && fail ".env not found."
set -o allexport; source "$SCRIPT_DIR/.env"; set +o allexport

for var in FTP_HOST FTP_USER FTP_PASS FTP_REMOTE_DIR LOCAL_SITE; do
  [[ -z "${!var:-}" ]] && fail "Missing variable in .env: $var"
done

DIST_DIR="$(realpath "$SCRIPT_DIR/$LOCAL_SITE/dist")"

[[ ! -d "$DIST_DIR" ]] && fail "dist/ not found at $DIST_DIR - run deploy.sh first to build."

# ── Check lftp ────────────────────────────────────────────────────────────────
if ! command -v lftp &>/dev/null; then
  echo -e "${YELLOW}⚠ lftp not found - installing...${NC}"
  if command -v pacman &>/dev/null; then
    sudo pacman -S --noconfirm lftp
  elif command -v apt-get &>/dev/null; then
    sudo apt-get install -y lftp
  else
    fail "lftp not found. Install it manually: https://lftp.yar.ru/"
  fi
fi

# ── Header ────────────────────────────────────────────────────────────────────
echo ""
echo -e "${BOLD}${BLUE}══════════════════════════════════════════════════${NC}"
echo -e "${BOLD}  Lelevar Sync   $(date '+%Y-%m-%d %H:%M:%S')${NC}"
echo -e "${BOLD}${BLUE}══════════════════════════════════════════════════${NC}"
info "Host:   $FTP_HOST"
info "Remote: $FTP_REMOTE_DIR"
info "Local:  $DIST_DIR"
echo -e "${BOLD}${BLUE}══════════════════════════════════════════════════${NC}"

echo -e "\n${BOLD}Syncing changed files...${NC}"
info "Comparing checksums - unchanged files will be skipped\n"

# ── Sync ──────────────────────────────────────────────────────────────────────
lftp -u "$FTP_USER,$FTP_PASS" "$FTP_HOST" -e "
set ftp:ssl-allow no
set net:timeout 30
set net:max-retries 3
set net:reconnect-interval-base 5
mirror --reverse --delete --verbose=3 --parallel=5 $DIST_DIR/ $FTP_REMOTE_DIR/
quit
"

# ── Done ──────────────────────────────────────────────────────────────────────
echo ""
echo -e "${BOLD}${GREEN}══════════════════════════════════════════════════${NC}"
echo -e "${BOLD}${GREEN}  ✓ Sync complete → $FTP_HOST$FTP_REMOTE_DIR${NC}"
echo -e "${BOLD}${GREEN}══════════════════════════════════════════════════${NC}"
