#!/usr/bin/env bash
# sql-harness dev launcher — mirrors browser-harness's `browser-harness` repo script.
#
# Runs the current working tree WITHOUT depending on the globally-installed
# `sql-harness` console script. Three resolution paths, first match wins:
#   1. repo venv python (if present)
#   2. `uv run python -m sql_harness.run` (if uv is available)
#   3. bare `python3 -m sql_harness.run` with PYTHONPATH set to src/
#
# Dev-mode state is isolated under $ROOT/.sql-harness-dev so it never pollutes
# the user's global ~/.config/sql-harness.

set -euo pipefail

# ROOT = lab/sql_harness/ (two levels up from this script: it lives at repo-root/scripts/? No —
# browser-harness keeps the launcher at repo root; sql-harness's "repo root" is lab/sql_harness/).
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$SCRIPT_DIR"
SRC="$ROOT/src"

# Isolate dev state.
export BH_SQL_HOME="$ROOT/.sql-harness-dev"
mkdir -p "$BH_SQL_HOME"

# Pick a python.
if [ -x "$ROOT/.venv/bin/python" ]; then
  exec "$ROOT/.venv/bin/python" -m sql_harness.run "$@"
fi
if command -v uv >/dev/null 2>&1; then
  exec uv --directory "$ROOT" run python -m sql_harness.run "$@"
fi
# Fallback: bare python3 with src on the path.
export PYTHONPATH="$SRC${PYTHONPATH:+:$PYTHONPATH}"
exec python3 -m sql_harness.run "$@"