#!/bin/sh
set -e

# this script must be placed in .git/hooks/pre-commit for it to run automatically
# it is put here in the repo so that it can be used by anyone who clones the repo
# it assumes the environment to run `ruff` and `python manage.py tailwind build` is already set up and activated

if ! command -v ruff >/dev/null; then
    echo "pre-commit: ruff not found; set up and activate the development environment first."
    exit 1
fi

ruff check

should_run=$(git diff --cached --name-only -z | python tools/is_tracked_by_tailwind.py)

if [ "$should_run" = "yes" ]; then
    echo "Building Tailwind CSS..."
    python manage.py tailwind build
    git add theme/static/css/dist/styles.css
else
    echo "No relevant changes; skipping Tailwind build."
fi

# Check for trailing whitespace in staged files, fail if found

git diff --cached --name-only --diff-filter=ACM | while IFS= read -r file; do
    [ -f "$file" ] || continue

    case "$file" in
        *.py|*.js|*.ts|*.sh|*.md|*.txt|*.html|*.css)
            if grep -qE '[[:space:]]+$' "$file"; then
                echo "Commit aborted due to trailing whitespace."
                echo "Fix it manually or use tools/strip-trailing-whitespace.sh"
                exit 1
            fi
            ;;
    esac
done
