#!/usr/bin/env bash
set -euo pipefail

REPO_ROOT="$(git rev-parse --show-toplevel)"

staged_files=()

while IFS= read -r file; do
  if [[ "$file" =~ \.(py|pyi)$ ]]; then
    staged_files+=("$file")
  fi
done < <(git diff --cached --name-only --diff-filter=ACMR)

if [ "${#staged_files[@]}" -eq 0 ]; then
  exit 0
fi

cd "$REPO_ROOT"
task format:files -- "${staged_files[@]}" || {
  echo "pre-commit: failed to format staged Python files."
  exit 1
}

git add -- "${staged_files[@]}"
