# Copyright (c) 2023 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the MIT license

name: Detect outdated pre-commit hooks

on:
  schedule:
    - cron: '0 16 * * 5'  # Every Friday 4pm

# NOTE: This will drop all permissions from GITHUB_TOKEN except metadata read,
#       and then (re)add the ones listed below:
permissions:
  contents: write
  pull-requests: write

jobs:
  pre_commit_detect_outdated:
    name: Detect outdated pre-commit hooks
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v6

      - name: Set up Python 3.12
        uses: actions/setup-python@v6
        with:
          python-version: 3.12

      - name: Install pre-commit
        run: |-
          pip install \
            --disable-pip-version-check \
            --no-warn-script-location \
            --user \
            pre-commit
          echo "PATH=${HOME}/.local/bin:${PATH}" >> "${GITHUB_ENV}"

      - name: Check for outdated hooks
        run: |-
          pre-commit autoupdate
          git diff -- .pre-commit-config.yaml

      - name: Create pull request from changes (if any)
        id: create-pull-request
        uses: peter-evans/create-pull-request@v8
        with:
          author: 'pre-commit <pre-commit@tools.invalid>'
          base: master
          body: |-
            For your consideration.

            :warning: Please **CLOSE AND RE-OPEN** this pull request so that [further workflow runs get triggered](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs) for this pull request.
          branch: precommit-autoupdate
          commit-message: "pre-commit: Autoupdate"
          delete-branch: true
          draft: true
          labels: enhancement
          title: "pre-commit: Autoupdate"

      - name: Log pull request URL
        if: "${{ steps.create-pull-request.outputs.pull-request-url }}"
        run: |
          echo "Pull request URL is: ${{ steps.create-pull-request.outputs.pull-request-url }}"
