## @file
# Mergify YML file that automatically merges a GitHub pull request against
# edk2-ci if all of the GitHub branch protections have passed.  It also
# contains rules to:
# * auto close branches that are not from an EDK II Maintainer
# * post a comment on pull requests that have merge conflicts.
# * post a comment on pull requests that have PatchCheck.py errors.
#
# Configuration Notes:
# * Update the 'base=edk2-ci' statements with the name of the branch to merge
#   pull requests.
#
# * Update the 'status-failure' statement with the name of the name of the Azure
#   Pipelines Build that performs the EDK II Maintainer check.
#
# * This file must be checked into the 'default' branch of a repo.  Copies
#   of this file on other branches of a repo are ignored by Mergify.
#
# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
# https://github.com/apps/mergify
# https://doc.mergify.io/
#
##

pull_request_rules:

  - name: Automatically merge a PR when all required checks pass and 'push' label is present
    conditions:
      - base~=(^master|^stable/)
      - label=push
      - author=@tianocore/edk-ii-maintainers
      - status-success=tianocore.PatchCheck
      - status-success=Ubuntu GCC5 PR
      - status-success=Windows VS2019 PR
    actions:
      merge:
        strict: true
        method: rebase

  - name: Automatically close a PR when all required checks pass and 'push' label is not present
    conditions:
      - base~=(^master|^stable/)
      - -label=push
      - -closed
      - status-success=tianocore.PatchCheck
      - status-success=Ubuntu GCC5 PR
      - status-success=Windows VS2019 PR
      - status-success=Ubuntu GCC5 PR (FINISHED)
      - status-success=Windows VS2019 PR (FINISHED)
    actions:
      close:
        message: All checks passed. Auto close personal build.

  - name: Post a comment on a PR that can not be merged due to a merge conflict
    conditions:
      - base~=(^master|^stable/)
      - conflict
    actions:
      comment:
        message: PR can not be merged due to conflict.  Please rebase and resubmit

  - name: Automatically close a PR that fails the EDK II Maintainers membership check and 'push' label is present
    conditions:
      - base~=(^master|^stable/)
      - label=push
      - -author=@tianocore/edk-ii-maintainers
    actions:
      close:
        message: PR submitter is not a member of the Tianocore EDK II Maintainers team

  - name: Post a comment on a PR if PatchCheck fails
    conditions:
      - base~=(^master|^stable/)
      - status-failure=tianocore.PatchCheck
    actions:
      comment:
        message: PR can not be merged due to a PatchCheck failure.  Please resolve and resubmit

  - name: Post a comment on a PR if Ubuntu GCC5 fails
    conditions:
      - base~=(^master|^stable/)
      - status-failure=Ubuntu GCC5 PR
      - status-success=Ubuntu GCC5 PR (FAILED)
    actions:
      comment:
        message: PR can not be merged due to an Ubuntu GCC5 failure.  Please resolve and resubmit

  - name: Post a comment on a PR if Windows VS2019 fails
    conditions:
      - base~=(^master|^stable/)
      - status-failure=Windows VS2019 PR
      - status-success=Windows VS2019 PR (FAILED)
    actions:
      comment:
        message: PR can not be merged due to a Windows VS2019 failure.  Please resolve and resubmit
