name: Pre-commit check
permissions:
  contents: read

on:
  push:
    branches-ignore:
      - renovate/**
      - weblate
  pull_request:

jobs:
  pre-commit:
    runs-on: ubuntu-24.04

    steps:
      - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
        with:
          persist-credentials: false
      - name: Get cache tag
        id: get-date
        run: |
          echo "cache_tag=$(/bin/date --utc '+%Y%m')" >> "$GITHUB_OUTPUT"
          echo "previous_cache_tag=$(/bin/date --date='1 month ago' --utc '+%Y%m')" >> "$GITHUB_OUTPUT"
        shell: bash
      - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
        id: pre-commit-cache
        with:
          path: ~/.cache/pre-commit
          key: ${{ runner.os }}-pre-commit-${{ steps.get-date.outputs.cache_tag }}-${{ hashFiles('.pre-commit-config.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pre-commit-${{ steps.get-date.outputs.cache_tag }}
            ${{ runner.os }}-pre-commit-${{ steps.get-date.outputs.previous_cache_tag }}
            ${{ runner.os }}-pre-commit-
      - name: Setup Python
        uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
        with:
          python-version: '3.14'
      - uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
        with:
          version: 0.9.22
          enable-cache: false
      - name: pre-commit
        run: |
          uvx pre-commit run --all --show-diff-on-failure
          uvx pre-commit gc
        env:
          RUFF_OUTPUT_FORMAT: github
          REUSE_OUTPUT_FORMAT: github
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: diff
        run: git diff
        if: always()
      - uses: pre-commit-ci/lite-action@5d6cc0eb514c891a40562a58a8e71576c5c7fb43 # v1.1.0
        if: always()
        with:
          msg: 'chore(pre-commit): apply code formatting'
