name: Contributors on: schedule: - cron: '0 3 * * 0' # Weekly on Sundays at 3am UTC workflow_dispatch: # Manual trigger jobs: contributors: runs-on: ubuntu-latest timeout-minutes: 5 permissions: contents: write pull-requests: write steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Extract Node version from package.json id: node-version run: | NODE_VERSION=$(jq -r '.engines.node // "22.x"' package.json) echo "version=${NODE_VERSION}" >> "$GITHUB_OUTPUT" - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: ${{ steps.node-version.outputs.version }} - name: Install dependencies run: npm ci - name: Check contributors id: contributors_check run: npm run contributors:check env: PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }} continue-on-error: true - name: Generate contributors report if: steps.contributors_check.outcome == 'failure' run: | mkdir -p reports npm run contributors:report test -f reports/contributor-report.md && cat reports/contributor-report.md >> "$GITHUB_STEP_SUMMARY" env: PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }} continue-on-error: true - name: Regenerate README run: npm start - name: Check for changes id: verify-changed-files run: | if git diff --exit-code > /dev/null; then echo "changed=false" >> $GITHUB_OUTPUT else echo "changed=true" >> $GITHUB_OUTPUT fi - name: Commit contributors if: steps.verify-changed-files.outputs.changed == 'true' run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add . git commit -m "docs: update contributors" -a || exit 0 - name: Create Pull Request if: steps.verify-changed-files.outputs.changed == 'true' uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "docs: update contributors" title: "Update Contributors" body: | Auto-generated PR to update contributors. This PR was automatically created by the contributors workflow. branch: update-contributors delete-branch: true