#!/bin/sh
# Pre-commit hook: lint and format staged files
# Usage: cp scripts/pre-commit .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit

echo "🔍 Running pre-commit checks..."

# Get staged files
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(js|jsx|ts|tsx)$')

if [ -z "$STAGED_FILES" ]; then
  echo "✅ No JS/TS files to check"
  exit 0
fi

# Run ESLint
echo "📝 Running ESLint..."
npx eslint $STAGED_FILES --fix
ESLINT_EXIT=$?

# Re-add fixed files
git add $STAGED_FILES

if [ $ESLINT_EXIT -ne 0 ]; then
  echo "❌ ESLint failed. Please fix errors before committing."
  exit 1
fi

# Run TypeScript check
echo "🔧 Running TypeScript check..."
npx tsc --noEmit
TSC_EXIT=$?

if [ $TSC_EXIT -ne 0 ]; then
  echo "❌ TypeScript check failed."
  exit 1
fi

echo "✅ Pre-commit checks passed!"
exit 0
