#!/usr/bin/env bash
# Pre-commit hook: format Haskell sources with fourmolu before each commit.
# Aborts the commit if formatting changes are needed.
#
# To install: make sure .githooks is CONFIGURED as the hooks directory
# in git config (or copy this to .git/hooks/pre-commit).
set -euo pipefail

# Only run if fourmolu is available (skips on systems without the hs wrapper)
if command -v ./hs &>/dev/null && ./hs fourmolu --version &>/dev/null 2>&1; then
    # Check which .hs files are staged for commit
    STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.hs$' || true)
    if [ -n "$STAGED_FILES" ]; then
        # shellcheck disable=SC2086
        if ! ./hs fourmolu -m check $STAGED_FILES >/dev/null 2>&1; then
            echo "❌ Formatting check failed. Run the following to fix:"
            echo "   ./hs fourmolu -i $STAGED_FILES"
            echo "   git add $STAGED_FILES"
            exit 1
        fi
    fi
fi
