#!/bin/sh
# Pre-commit hook for toon-lsp
# Runs cargo fmt and clippy to ensure code quality

set -e

# Check if cargo is available
if ! command -v cargo &> /dev/null; then
    echo "Error: cargo not found in PATH"
    exit 1
fi

# Get list of staged Rust files
STAGED_RS_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.rs$' || true)

if [ -n "$STAGED_RS_FILES" ]; then
    echo "==> Running cargo fmt..."
    cargo fmt --all

    # Re-add formatted files to staging
    echo "$STAGED_RS_FILES" | xargs git add
    echo "    Formatting complete."

    echo "==> Running cargo clippy..."
    cargo clippy --all-targets --all-features -- -D warnings
    echo "    Clippy passed."
fi

echo "==> Pre-commit checks passed."
