#!/usr/bin/env bash
# Punct unic de intrare: 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}"
LISTARA_IP="${LISTARA_IP:-192.166.82.76}"
LISTARA_NAME="${LISTARA_NAME:-listara.online}"
SSH_CONF="${HOME}/.ssh/listara-updater/config"

echo "=== Deploy → Listara (${LISTARA_NAME}) ==="
echo "Proiect: ${ROOT}"
echo ""

ensure_config() {
  if [[ ! -f "${ROOT}/deploy/deploy.conf.listara" ]]; then
    if [[ -f "${ROOT}/deploy/deploy.conf.listara.example" ]]; then
      cp "${ROOT}/deploy/deploy.conf.listara.example" "${ROOT}/deploy/deploy.conf.listara"
      echo "Creat deploy/deploy.conf.listara din example."
    else
      echo "EROARE: lipsește deploy/deploy.conf.listara"
      echo "Rulează: curl -sSL https://listara.online/deploy-kit/bootstrap-local.sh | bash"
      exit 1
    fi
  fi

  if grep -q '207.231.110.240' "${ROOT}/deploy/deploy.conf.listara" 2>/dev/null; then
    echo "EROARE: deploy.conf.listara indică server Windows, nu Listara."
    exit 1
  fi
}

install_ssh() {
  PROJECT_DIR="${ROOT}" bash "${ROOT}/deploy/lib/install-listara-ssh.sh"
}

test_ssh() {
  if ssh -F "${SSH_CONF}" -o ConnectTimeout=15 "root@${LISTARA_IP}" "echo SSH_OK" >/dev/null 2>&1; then
    echo "SSH OK → root@${LISTARA_IP} (via ${SSH_CONF})"
    return 0
  fi
  echo "SSH eșuat — reinstalez identitatea în ~/.ssh/listara-updater ..."
  install_ssh
  ssh -F "${SSH_CONF}" -o ConnectTimeout=15 "root@${LISTARA_IP}" "echo SSH_OK && rsync --version | head -1" || {
    echo ""
    echo "EROARE SSH: nu mă pot conecta la root@${LISTARA_IP}"
    exit 1
  }
  echo "SSH OK → root@${LISTARA_IP}"
}

ensure_config
install_ssh
test_ssh

echo ""
"${ROOT}/deploy.sh" deploy
echo ""
echo "=== Deploy finalizat cu succes ==="
