#!/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