name: Update Contributors

on:
  push:
    branches: [main, dev]
  workflow_dispatch:
  schedule:
    - cron: "0 0 * * 0" # Every Sunday at midnight UTC

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  update-contributors:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          fetch-depth: 0

      - name: Generate contributors SVG
        uses: tw93/contributors-list@master
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          svgPath: CONTRIBUTORS.svg
          svgWidth: 1000
          avatarSize: 72
          avatarMargin: 45
          userNameHeight: 20
          noFetch: false
          noCommit: true
          truncate: 0
          includeBots: false
          excludeUsers: "github-actions web-flow dependabot claude"
          itemTemplate: |
            <g transform="translate({{ x }}, {{ y }})">
              <defs>
                <clipPath id="cp-{{ login }}">
                  <circle cx="36" cy="36" r="36" />
                </clipPath>
              </defs>
              <a xlink:href="{{{ url }}}" href="{{{ url }}}" class="contributor-link" target="_blank" rel="nofollow sponsored" title="{{{ name }}}">
                <image width="72" height="72" xlink:href="{{{ avatar }}}" href="{{{ avatar }}}" clip-path="url(#cp-{{ login }})" />
                <text x="36" y="86" text-anchor="middle" alignment-baseline="middle" font-size="10" fill="#666" font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif">{{{ name }}}</text>
              </a>
            </g>

      - name: Commit & Push
        uses: stefanzweifel/git-auto-commit-action@v7
        with:
          commit_message: "chore: update contributors [skip ci]"
          file_pattern: CONTRIBUTORS.svg
          commit_user_name: github-actions[bot]
          commit_user_email: 41898282+github-actions[bot]@users.noreply.github.com
          commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
          push_options: '--force'
