name: Dependabot approve and merge

on: pull_request_target

permissions:
  pull-requests: write
  contents: write
  packages: read

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
    steps:
      ## Extract information about the dependencies being updated by a Dependabot-generated PR
      - name: Dependabot metadata
        id: dependabot-metadata
        uses: dependabot/fetch-metadata@v2.2.0
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"

      - name: Checkout repository
        uses: actions/checkout@v4

      ## NOTE: This step is only required if the repository has been configured to Require approval
      ## Checks if update-type is patch or minor, then approve if the PR status is not approved yet.
      - name: Auto approve patch and minor updates
        uses: hmarr/auto-approve-action@v4
        if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}}

      ## NOTE: Requirements for merge has to be configured in the Branch protection rule page.
      ## To do so, go to repository > Settings > Branches > Edit.
      - name: Enable auto-merge for Dependabot PRs
        if: ${{ contains(github.event.pull_request.title, 'bump')}}
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}