---
# This action is centrally managed in https://github.com/<organization>/.github/
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in
# the above-mentioned repo.

# This workflow will, first, automatically approve PRs created by @LizardByte-bot. Then it will automerge relevant PRs.

name: Automerge PR

on:
  pull_request:
    types:
      - opened
      - synchronize

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

jobs:
  autoapprove:
    if: >-
      contains(fromJson('["LizardByte-bot"]'), github.event.pull_request.user.login) &&
      contains(fromJson('["LizardByte-bot"]'), github.actor) &&
      startsWith(github.repository, 'LizardByte/')
    runs-on: ubuntu-latest
    steps:
      - name: Autoapproving
        uses: hmarr/auto-approve-action@v4
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"

      - name: Label autoapproved
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GH_BOT_TOKEN }}
          script: |
            github.rest.issues.addLabels({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              labels: ['autoapproved', 'autoupdate']
            })

  automerge:
    if: startsWith(github.repository, 'LizardByte/')
    needs: [autoapprove]
    runs-on: ubuntu-latest

    steps:
      - name: Automerging
        uses: pascalgn/automerge-action@v0.16.3
        env:
          BASE_BRANCHES: nightly
          GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
          GITHUB_LOGIN: ${{ secrets.GH_BOT_NAME }}
          MERGE_LABELS: "!dependencies"
          MERGE_METHOD: "squash"
          MERGE_COMMIT_MESSAGE: "{pullRequest.title} (#{pullRequest.number})"
          MERGE_DELETE_BRANCH: true
          MERGE_ERROR_FAIL: true
          MERGE_FILTER_AUTHOR: ${{ secrets.GH_BOT_NAME }}
          MERGE_RETRIES: "240"  # 1 hour
          MERGE_RETRY_SLEEP: "15000"  # 15 seconds
