name: Update pre-commit hooks

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

env:
  FORCE_COLOR: 1

jobs:
  auto-update:
    name: Update pre-commit hooks
    if: ${{ github.repository == 'vacanza/holidays' }}
    permissions:
      contents: write
      pull-requests: write
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3

      - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548
        with:
          cache: pip
          python-version: '3.14'

      - name: Install dependencies
        run: |
          python -m pip install pre-commit

      - name: Use pre-commit environment cache
        uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830
        with:
          key: ${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
          path: ~/.cache/pre-commit
          restore-keys: ${{ runner.os }}-pre-commit-

      - name: Run pre-commit automatic update
        run: |
          pre-commit autoupdate
          pre-commit run --all-files

      - uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412
        with:
          base: dev
          body: Update pre-commit hooks to their latest versions.
          branch: update-pre-commit-hooks
          commit-message: 'chore: Update pre-commit hooks'
          committer: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
          delete-branch: true
          title: Update pre-commit hooks
          token: ${{ github.token }}
