#!/usr/bin/env bash
# Meniu deploy local → Listara (terminal + shortcut Desktop).
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "${ROOT}"
export DEPLOY_CONFIG="${DEPLOY_CONFIG:-deploy/deploy.conf.listara}"
export ROOT

LISTARA_IP="${LISTARA_IP:-192.166.82.76}"
LISTARA_NAME="${LISTARA_NAME:-listara.online}"
SSH_CONF="${HOME}/.ssh/listara-updater/config"

# shellcheck source=deploy/lib/full-deploy-confirm.sh
source "${ROOT}/deploy/lib/full-deploy-confirm.sh"

pause() {
  echo
  read -r -p "Apasă Enter pentru a continua..." _
}

prepare_ssh() {
  PROJECT_DIR="${ROOT}" bash "${ROOT}/deploy/lib/install-listara-ssh.sh" >/dev/null
  if ! ssh -F "${SSH_CONF}" -o ConnectTimeout=15 "root@${LISTARA_IP}" "echo OK" >/dev/null 2>&1; then
    echo "EROARE: SSH eșuat către root@${LISTARA_IP}"
    echo "Rulează: curl -sSL https://listara.online/deploy-kit/bootstrap-local.sh | bash"
    return 1
  fi
  echo "SSH OK → root@${LISTARA_IP}"
}

show_menu() {
  [[ -t 1 ]] && clear || true
  echo "══════════════════════════════════════════════════════════"
  echo "  Deploy App Main-Updater → Listara (${LISTARA_NAME})"
  echo "  Proiect: ${ROOT}"
  echo "  Destinație: root@${LISTARA_IP}:/opt/apps/main-updater"
  echo "══════════════════════════════════════════════════════════"
  echo ""
  echo "  1) Deploy standard      — fișiere + migrări + date referință"
  echo "  2) Full Deploy          — fișiere + DB merge (păstrează users/listings)"
  echo "  3) Dry-run              — previzualizare fără modificări"
  echo "  4) Verificare Listara   — test SSH, rsync, config"
  echo "  5) Sync DB referință    — categorii, orașe, meniuri (merge)"
  echo "  6) Push DB              — setări/referință fără users/listings"
  echo "  7) Test SSH             — conexiune la Listara"
  echo "  0) Ieșire"
  echo ""
}

run_action() {
  local choice="$1"
  case "${choice}" in
    1)
      echo "=== Deploy standard ==="
      prepare_ssh || return 1
      "${ROOT}/deploy.sh" deploy
      echo "=== Deploy standard finalizat ==="
      ;;
    2)
      echo "=== Full Deploy ==="
      confirm_full_deploy || return 0
      FULL_DEPLOY_SKIP_CONFIRM=1 bash "${ROOT}/deploy/run-full-deploy-listara.sh"
      ;;
    3)
      echo "=== Dry-run ==="
      prepare_ssh || return 1
      "${ROOT}/deploy.sh" dry-run
      ;;
    4)
      "${ROOT}/deploy.sh" verify-listara
      ;;
    5)
      prepare_ssh || return 1
      "${ROOT}/deploy.sh" db-sync
      ;;
    6)
      prepare_ssh || return 1
      "${ROOT}/deploy.sh" db-push
      ;;
    7)
      prepare_ssh || return 1
      "${ROOT}/deploy.sh" test-ssh
      ;;
    0|q|Q)
      echo "Ieșire."
      exit 0
      ;;
    *)
      echo "Opțiune invalidă: ${choice}"
      return 1
      ;;
  esac
}

if [[ -n "${1:-}" ]]; then
  run_action "$1"
  pause
  exit 0
fi

while true; do
  show_menu
  read -r -p "Alege opțiunea [0-7]: " choice
  echo ""
  if run_action "${choice}"; then
    pause
  else
    pause
  fi
done
