name: refresh-contributors-wall

on:
  # Daily refresh keeps the contributors wall CDN cache moving even when
  # contributor data changes outside pull request merges.
  schedule:
    - cron: '0 1 * * *'
  # Manual trigger: Use when you need to force-refresh the contributors wall
  # outside the daily schedule (e.g., after a bulk contributor update or
  # after fixing the cache_bust pattern in README files).
  workflow_dispatch:

permissions:
  contents: write
  pull-requests: write

concurrency:
  group: refresh-contributors-wall
  cancel-in-progress: true

jobs:
  refresh:
    name: Refresh contributors wall cache bust
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v6.0.2

      - name: Refresh cache bust date
        run: |
          DATE="$(date -u +%F)"
          MATCHES="$(perl -0ne '$count += () = /cache_bust=\d{4}-\d{2}-\d{2}/g; END { print $count + 0 }' README*.md)"
          if [ "$MATCHES" -eq 0 ]; then
            echo "Warning: No cache_bust patterns found. README format may have changed."
            exit 1
          fi
          perl -0pi -e "s/cache_bust=\d{4}-\d{2}-\d{2}/cache_bust=$DATE/g" README*.md

      - name: Create refresh pull request
        uses: peter-evans/create-pull-request@v8
        with:
          # Auth mirrors the metrics workflow: prefer a repository token that can
          # create pull requests, with GITHUB_TOKEN as a fallback for repos where
          # Actions-created PRs are allowed.
          token: ${{ secrets.METRICS_TOKEN || secrets.GITHUB_TOKEN }}
          add-paths: 'README*.md'
          branch: automation/refresh-contributors-wall
          delete-branch: true
          commit-message: 'docs(readme): refresh contributors wall'
          title: 'docs(readme): refresh contributors wall'
          body: |
            Refreshes the contributors wall cache bust date in README files.

            Generated by the scheduled `refresh-contributors-wall` workflow.
