#!/usr/bin/env bash
# setup-dev.template.sh — illustrative bootstrap for a consuming superbuild workspace
#
# Copy to your workspace (e.g. tools/setup-dev.sh), adapt variables, and run after clone.
# Requires: git, bash. On Windows use Git Bash or WSL.

set -euo pipefail

WORKSPACE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
AI_RULES="${WORKSPACE_ROOT}/tools/ai-rules"
CURSOR_RULES="${WORKSPACE_ROOT}/.cursor/rules"
SHARED_CURSOR_SRC="${AI_RULES}/cursor/rules"
MATERIALIZE_MODE="${MATERIALIZE_MODE:-copy}"  # copy | symlink

log() { printf '[setup-dev] %s\n' "$*"; }
die() { printf '[setup-dev] ERROR: %s\n' "$*" >&2; exit 1; }

# --- 1. Initialize and update submodules (including tools/ai-rules) ---
log "Initializing submodules..."
cd "${WORKSPACE_ROOT}"
git submodule update --init --recursive

# --- 2. Verify shared workflow submodule ---
[[ -d "${AI_RULES}" ]] || die "Missing ${AI_RULES}. Add submodule: ai-workflows/superbuild-workflow"
[[ -f "${AI_RULES}/AGENTS.md" ]] || die "Invalid ai-rules checkout — AGENTS.md not found"

log "ai-rules revision: $(git -C "${AI_RULES}" rev-parse --short HEAD)"

# --- 3. Materialize Cursor adapter rules ---
mkdir -p "${CURSOR_RULES}"

materialize_file() {
  local src="$1"
  local dest="$2"
  case "${MATERIALIZE_MODE}" in
    copy)
      cp -f "${src}" "${dest}"
      ;;
    symlink)
      ln -sfn "$(realpath "${src}")" "${dest}"
      ;;
    *)
      die "Unknown MATERIALIZE_MODE=${MATERIALIZE_MODE} (use copy or symlink)"
      ;;
  esac
}

if [[ -d "${SHARED_CURSOR_SRC}" ]]; then
  log "Materializing shared Cursor rules (${MATERIALIZE_MODE})..."
  shopt -s nullglob
  for src in "${SHARED_CURSOR_SRC}"/*.mdc; do
    base="$(basename "${src}")"
    dest="${CURSOR_RULES}/${base}"
    materialize_file "${src}" "${dest}"
    log "  ${base}"
  done
  shopt -u nullglob
else
  log "WARN: No shared cursor rules at ${SHARED_CURSOR_SRC}"
fi

# --- 4. Preserve local overlays ---
# Convention: local overlay files use prefix 90- or name *-local.mdc
# This script does not delete them. Add your overlay manually from:
#   tools/ai-rules/templates/project-local-rule.template.mdc

if [[ ! -f "${CURSOR_RULES}/90-local-overlay.mdc" ]]; then
  log "NOTE: No local overlay at ${CURSOR_RULES}/90-local-overlay.mdc"
  log "      Copy from tools/ai-rules/templates/project-local-rule.template.mdc if needed"
fi

# --- 5. Optional: Conan + CMake preset sanity (customize for your workspace) ---
# if command -v conan >/dev/null 2>&1; then
#   log "Running conan install..."
#   conan install "${WORKSPACE_ROOT}" --output-folder=build --build=missing
# fi
# if command -v cmake >/dev/null 2>&1; then
#   log "Configure with preset dev-debug (if defined)..."
#   cmake --preset dev-debug
# fi

log "Done. Agents should read: ${WORKSPACE_ROOT}/AGENTS.md and ${AI_RULES}/AGENTS.md"
