#!/usr/bin/env bash
# ---------------------------------------------------------------------------
# Idempotent environment bootstrap for a FRESH sandbox (see docs/ENVIRONMENT.md
# and docs/RESILIENCE-PLAYBOOK.md §5). Installs the PHP runtime + extensions,
# verifies them, and (optionally) prepares the database.
#
# Usage: bash scripts/setup-env.sh [--with-db]
#   --with-db   also run `php bin/iya migrate` (and `seed` if the DB is empty)
# ---------------------------------------------------------------------------
set -euo pipefail

SELF="${BASH_SOURCE[0]}"
SRC="$(cd "$(dirname "$SELF")/.." && pwd)"

echo "[env] 1/3 installing php runtime (apt)"
if ! command -v php >/dev/null 2>&1; then
  apt-get update -qq
  DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
    php-cli php-sqlite3 php-mbstring php-xml php-curl php-intl php-zip
else
  echo "[env]   php already present: $(php -r 'echo PHP_VERSION;')"
fi

echo "[env] 2/3 verifying extensions"
php -v | head -1
MISSING=0
for ext in sqlite3 pdo_sqlite mbstring xml curl intl zip; do
  if php -m | grep -qix "$ext"; then
    echo "[env]   ok  $ext"
  else
    echo "[env]   MISSING $ext" >&2; MISSING=1
  fi
done
[ "$MISSING" = "0" ] || { echo "[env] FATAL: install missing extensions" >&2; exit 1; }

if [ "${1:-}" = "--with-db" ]; then
  echo "[env] 3/3 database (migrate + seed-if-empty)"
  cd "$SRC"
  php bin/iya migrate
  USERS="$(php -r 'require "bootstrap/autoload.php"; $p=new PDO("sqlite:".Iya\Core\Config::getString("DB_SQLITE_PATH","var/data/iya.sqlite3")); echo (int)$p->query("SELECT COUNT(*) FROM users")->fetchColumn();' 2>/dev/null || echo 0)"
  if [ "$USERS" = "0" ]; then
    php bin/iya seed
  else
    echo "[env]   users present ($USERS) — seed skipped"
  fi
else
  echo "[env] 3/3 skipped db (--with-db to migrate+seed)"
fi

echo "[env] done. Health gate: cd $SRC && php bin/iya doctor && php tests/run.php | tail -2"
