# https://doc.mergify.io/
pull_request_rules:
  - name: label changes from community
    conditions:
      - author≠@core-contributors
      - author≠@monorepo-maintainers
      - author≠@monorepo-write
      - author≠@monorepo-triage
      - author≠mergify[bot]
      - author≠dependabot[bot]
      - author≠github-actions[bot]
    actions:
      label:
        add:
          - community
          - need:merge-assist
  - name: request review for community changes
    conditions:
      - author≠@core-contributors
      - author≠@monorepo-maintainers
      - author≠@monorepo-write
      - author≠@monorepo-triage
      - author≠mergify[bot]
      - author≠dependabot[bot]
      - author≠github-actions[bot]
      # Only request reviews from the pr subscribers group if no one
      # has reviewed the community PR yet. These checks only match
      # reviewers with admin, write or maintain permission on the repository.
      - "#approved-reviews-by=0"
      - "#commented-reviews-by=0"
      - "#changes-requested-reviews-by=0"
      - "#review-requested=0"
    actions:
      request_reviews:
        teams:
          - "@solana-labs/community-pr-subscribers"
  - name: label changes from monorepo-triage
    conditions:
      - author≠@core-contributors
      - author≠mergify[bot]
      - author≠dependabot[bot]
      - author≠github-actions[bot]
      - author≠@monorepo-maintainers
      - author≠@monorepo-write
      - author=@monorepo-triage
    actions:
      label:
        add:
          - need:merge-assist
  - name: automatic merge (squash) on CI success
    conditions:
      - and:
        - status-success=buildkite/solana
        - status-success=ci-gate
        - label=automerge
        - label!=no-automerge
        - or:
          # only require docs checks if docs files changed
          - -files~=^docs/
          - status-success=build & deploy docs
    actions:
      merge:
        method: squash
  - name: remove automerge label on CI failure
    conditions:
      - and:
        - label=automerge
        - "#status-failure!=0"
        - -merged
    actions:
      label:
        remove:
          - automerge
      comment:
        message: automerge label removed due to a CI failure
  - name: v1.14 feature-gate backport
    conditions:
      - label=v1.14
      - label=feature-gate
    actions:
      backport:
        assignees: &BackportAssignee
          - "{{ merged_by|replace('mergify[bot]', label|select('equalto', 'community')|first|default(author)|replace('community', '@solana-labs/community-pr-subscribers')) }}"
        title: "{{ destination_branch }}: {{ title }} (backport of #{{ number }})"
        ignore_conflicts: true
        labels:
          - feature-gate
        branches:
          - v1.14
  - name: v1.14 non-feature-gate backport
    conditions:
      - label=v1.14
      - label!=feature-gate
    actions:
      backport:
        assignees: *BackportAssignee
        title: "{{ destination_branch }}: {{ title }} (backport of #{{ number }})"
        ignore_conflicts: true
        branches:
          - v1.14
  - name: v1.16 feature-gate backport
    conditions:
      - label=v1.16
      - label=feature-gate
    actions:
      backport:
        assignees: *BackportAssignee
        title: "{{ destination_branch }}: {{ title }} (backport of #{{ number }})"
        ignore_conflicts: true
        labels:
          - feature-gate
        branches:
          - v1.16
  - name: v1.16 non-feature-gate backport
    conditions:
      - label=v1.16
      - label!=feature-gate
    actions:
      backport:
        assignees: *BackportAssignee
        title: "{{ destination_branch }}: {{ title }} (backport of #{{ number }})"
        ignore_conflicts: true
        branches:
          - v1.16

commands_restrictions:
  # The author of copied PRs is the Mergify user.
  # Restrict `copy` access to Core Contributors
  copy:
    conditions:
    - author=@core-contributors
