name: pre-commit on: pull_request: push: jobs: pre-commit: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Python uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install tooling run: | python -m pip install --upgrade pip python -m pip install pre-commit - name: Run pre-commit on changed files env: EVENT_NAME: ${{ github.event_name }} BASE_SHA: ${{ github.event.pull_request.base.sha }} BEFORE_SHA: ${{ github.event.before }} HEAD_SHA: ${{ github.sha }} run: | set -euo pipefail if [ "$EVENT_NAME" = "pull_request" ]; then FROM_SHA="$BASE_SHA" else FROM_SHA="$BEFORE_SHA" fi if [ -z "${FROM_SHA:-}" ] || [ "$FROM_SHA" = "0000000000000000000000000000000000000000" ]; then echo "No valid base SHA found; running on all files." pre-commit run --all-files --show-diff-on-failure --color=always else pre-commit run --from-ref "$FROM_SHA" --to-ref "$HEAD_SHA" --show-diff-on-failure --color=always fi