#!/usr/bin/env bash
# Yerel geliştirme — hafif başlatma (home dizini file-watch tuzağından kaçınır).
# Kullanım: ./scripts/start-faunamix-local.sh
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

PHP_BIN="${FAUNAMIX_PHP_BIN:-/Applications/MAMP/bin/php/php8.2.0/bin/php}"
PHP_PORT="${FAUNAMIX_PHP_PORT:-8080}"
FRONT_PORT="${FAUNAMIX_FRONT_PORT:-3000}"
LOG_DIR="${TMPDIR:-/tmp}/faunamix-local"
mkdir -p "$LOG_DIR"

free_port() {
  local port="$1"
  if command -v lsof >/dev/null 2>&1; then
    local pids
    pids="$(lsof -t -iTCP:"${port}" -sTCP:LISTEN 2>/dev/null || true)"
    if [[ -n "${pids}" ]]; then
      echo "[local] Port ${port} meşgul — süreçler sonlandırılıyor: ${pids}"
      kill ${pids} 2>/dev/null || true
      sleep 1
    fi
  fi
}

free_port "$PHP_PORT"
free_port "$FRONT_PORT"

if ! command -v "${PHP_BIN}" >/dev/null 2>&1; then
  echo "[local] Hata: PHP bulunamadı (${PHP_BIN}). FAUNAMIX_PHP_BIN ayarlayın."
  exit 1
fi

if [[ "$("${PHP_BIN}" -r 'echo PHP_MAJOR_VERSION;')" -lt 8 ]]; then
  echo "[local] Hata: PHP 8.0+ gerekli. MAMP php8.2 örneği: FAUNAMIX_PHP_BIN=/Applications/MAMP/bin/php/php8.2.0/bin/php"
  exit 1
fi

if [[ ! -f api/.env ]]; then
  echo "[local] Uyarı: api/.env yok — api/env.example kopyalayın."
fi
if [[ ! -f frontend/.env.local ]]; then
  echo "[local] Uyarı: frontend/.env.local yok — NEXT_PUBLIC_API_URL=http://localhost:8080 ekleyin."
fi

echo "[local] PHP API → http://localhost:${PHP_PORT} (log: ${LOG_DIR}/php-api.log)"
nohup env FAUNAMIX_PHP_BIN="${PHP_BIN}" FAUNAMIX_PHP_PORT="${PHP_PORT}" \
  ./scripts/start-php-api.sh >"${LOG_DIR}/php-api.log" 2>&1 &
PHP_PID=$!

echo "[local] Next.js → http://localhost:${FRONT_PORT} (log: ${LOG_DIR}/next-dev.log)"
echo "[local] İpucu: frontend turbopack.root = frontend/ (home dizini izlenmez)."
(
  cd frontend
  PORT="${FRONT_PORT}" npm run dev:local
) >"${LOG_DIR}/next-dev.log" 2>&1 &
NEXT_PID=$!

sleep 2
if ! kill -0 "${PHP_PID}" 2>/dev/null; then
  echo "[local] PHP API başlamadı. Log:"
  tail -20 "${LOG_DIR}/php-api.log" || true
  exit 1
fi
if ! kill -0 "${NEXT_PID}" 2>/dev/null; then
  echo "[local] Next.js başlamadı. Log:"
  tail -20 "${LOG_DIR}/next-dev.log" || true
  exit 1
fi

cat <<EOF

[local] Hazır (PID php=${PHP_PID}, next=${NEXT_PID})
  Vitrin:  http://localhost:${FRONT_PORT}
  API:     http://localhost:${PHP_PORT}
  Durdur:  kill ${PHP_PID} ${NEXT_PID}
  Loglar:  ${LOG_DIR}/

İlk sayfa açılışı 10–30 sn sürebilir; bu normal. Tarayıcıyı hemen yenilemeyin.

EOF
