#!/usr/bin/env bash
# scripts/compile-check — one-shot GHC compilation check.
#
# Does NOT start postgres or tailwind — just GHC.
# Relies on .ghci (sets -j1, -fkeep-going, loads IHP config).
#
# Usage:
#   scripts/compile-check            # show errors in terminal + write log
#   scripts/compile-check --bg       # write log only (for background/Claude use)
#
# Can be invoked via nix develop:
#   nix develop --override-input devenv-root "file+file://$PWD/.devenv/root" \
#     --command scripts/compile-check --bg
#
# Log file: /tmp/ihub-compile-errors.txt (override with IHUB_COMPILE_LOG)

set -euo pipefail

LOGFILE="${IHUB_COMPILE_LOG:-/tmp/ihub-compile-errors.txt}"
MODE="${1:-}"

# Ensure IHP_LIB is available
if [[ -z "${IHP_LIB:-}" ]]; then
    echo "ERROR: IHP_LIB is not set. Run inside devenv shell or via nix develop." >&2
    exit 1
fi

: > "$LOGFILE"
echo "[compile-check] Log: $LOGFILE"
echo "[compile-check] Mode: ${MODE:-interactive}"
echo "[compile-check] IHP_LIB: $IHP_LIB"

# One-shot compile: load all modules via .ghci config then quit immediately.
# -fkeep-going (set in .ghci) ensures all errors are reported, not just the first.
# ghcid is not available in this environment; ghci one-shot gives the same error output.
if [[ "$MODE" == "--bg" ]]; then
    echo ':quit' | ghci 2>&1 | tee "$LOGFILE"
else
    echo ':quit' | ghci 2>&1 | tee "$LOGFILE"
fi
