---
# 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.

# Label PRs with `autoupdate` if various conditions are met, otherwise, remove the label.

name: Label PR autoupdate

on:
  pull_request_target:
    types:
      - edited
      - opened
      - reopened
      - synchronize

jobs:
  label_pr:
    if: >-
      startsWith(github.repository, 'LizardByte/') &&
      contains(github.event.pull_request.body, fromJSON('"] I want maintainers to keep my branch updated"'))
    runs-on: ubuntu-latest
    env:
      GH_TOKEN: ${{ github.token }}
    steps:
      - name: Check if member
        id: org_member
        run: |
          status="true"
          gh api \
            -H "Accept: application/vnd.github+json" \
            /orgs/${{ github.repository_owner }}/members/${{ github.actor }} || status="false"

          echo "result=${status}" >> $GITHUB_OUTPUT

      - name: Label autoupdate
        if: >-
          steps.org_member.outputs.result == 'true' &&
          contains(github.event.pull_request.labels.*.name, 'autoupdate') == false &&
          contains(github.event.pull_request.body,
            fromJSON('"\n- [x] I want maintainers to keep my branch updated"')) == true
        uses: actions/github-script@v6
        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: ['autoupdate']
            })

      - name: Unlabel autoupdate
        if: >-
          contains(github.event.pull_request.labels.*.name, 'autoupdate') &&
          (
            (github.event.action == 'synchronize' && steps.org_member.outputs.result == 'false') ||
            (contains(github.event.pull_request.body,
              fromJSON('"\n- [x] I want maintainers to keep my branch updated"')) == false
            )
          )
        uses: actions/github-script@v6
        with:
          github-token: ${{ secrets.GH_BOT_TOKEN }}
          script: |
            github.rest.issues.removeLabel({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              name: ['autoupdate']
            })
