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

# Blue/green deploy for KarobariSuite.
# Usage: ./bin/deploy-blue-green.sh /var/www/karobari release.tar.gz

APP_ROOT="${1:-/var/www/karobari}"
ARTIFACT="${2:-release.tar.gz}"
RELEASES_DIR="${APP_ROOT}/releases"
CURRENT_LINK="${APP_ROOT}/current"
TIMESTAMP="$(date +%Y%m%d%H%M%S)"
TARGET="${RELEASES_DIR}/${TIMESTAMP}"

mkdir -p "${RELEASES_DIR}"
mkdir -p "${TARGET}"
tar -xzf "${ARTIFACT}" -C "${TARGET}"

cd "${TARGET}"
php bin/migrate.php

PREV="$(readlink -f "${CURRENT_LINK}" 2>/dev/null || true)"
ln -sfn "${TARGET}" "${CURRENT_LINK}"

if command -v systemctl >/dev/null 2>&1; then
  sudo systemctl reload php-fpm 2>/dev/null || sudo systemctl reload php8.2-fpm 2>/dev/null || true
elif command -v service >/dev/null 2>&1; then
  sudo service php-fpm reload 2>/dev/null || true
fi

curl -fsS "${DEPLOY_HEALTH_URL:-http://127.0.0.1/api/v1/health}" >/dev/null || {
  if [[ -n "${PREV}" && -d "${PREV}" ]]; then
    ln -sfn "${PREV}" "${CURRENT_LINK}"
  fi
  echo "Health check failed — rolled back to previous release." >&2
  exit 1
}

echo "Deployed ${TARGET}"
if [[ -n "${PREV}" && -d "${PREV}" ]]; then
  echo "Previous release kept at ${PREV}"
fi
