# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions#enabling-automerge-on-a-pull-request

name: Dependabot Automation
on: pull_request

permissions: {}

jobs:
  automerge:
    runs-on: ubuntu-latest
    permissions:
      contents: write # for pushing commits
      pull-requests: write # for merging PRs
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'Swatinem/rust-cache'
    steps:
      - name: Fetch metadata
        id: metadata
        uses: dependabot/fetch-metadata@21025c705c08248db411dc16f3619e6b5f9ea21a # v2.5.0
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          fetch-depth: 2
          persist-credentials: false
        if: steps.metadata.outputs.update-type == 'version-update:semver-patch'
      - name: Check if package-lock.json has been changed
        if: steps.metadata.outputs.update-type == 'version-update:semver-patch'
        id: npm
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
        run: |
          if ! git diff --quiet HEAD~1.. -- package-lock.json; then
            echo "changed=true" >> $GITHUB_OUTPUT
            echo "changed=true, checking out $PR_URL to allow amend"
            gh pr checkout "$PR_URL"
          fi
      - name: Setup node if necessary
        if: steps.npm.outputs.changed != ''
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: 24.x
          cache: npm
      - name: Re-generate and commit dist/ if changed
        id: amend
        if: steps.npm.outputs.changed != ''
        run: |
          npm ci
          npm run prepare
          if ! git diff --quiet dist/*/index.js; then
            echo "dist/ changed, amending last commit"
            export $(git log -1 --pretty=format:'GIT_COMMITTER_NAME=%cn GIT_COMMITTER_EMAIL=%ce GIT_AUTHOR_NAME=%an GIT_AUTHOR_EMAIL=%ae')
            git fetch --unshallow
            echo "Before amend:" && git show --name-only --pretty=
            git commit --amend --no-edit --no-reset-author -- dist/*/index.js
            echo "After amend:" && git show --name-only --pretty=
            git push --force-with-lease origin HEAD
            echo "changed=true" >> $GITHUB_OUTPUT
          fi
      - name: Auto-merge Patch PRs
        if: steps.metadata.outputs.update-type == 'version-update:semver-patch'
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
