# WARNING:
# When extending this action, be aware that $GITHUB_TOKEN allows write access to
# the GitHub repository. This means that it should not evaluate user input in a
# way that allows code injection.

name: Backport

on:
  pull_request_target:
    types: [closed, labeled]
    branches: [master, release/*]

permissions:
  contents: write # so it can comment
  pull-requests: write # so it can create pull requests

jobs:
  backport:
    name: Backport Pull Request
    if: github.repository_owner == 'crystal-lang' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          token: ${{ secrets.BACKPORT_ACTION_GITHUB_PAT }}
          persist-credentials: false

      - name: Create backport PR
        uses: korthout/backport-action@3c06f323a58619da1e8522229ebc8d5de2633e46 # v4.3.0
        with:
          github_token: ${{ secrets.BACKPORT_ACTION_GITHUB_PAT }}
          # Config README: https://github.com/korthout/backport-action#backport-action
          copy_labels_pattern: '^(breaking-change|security|topic:.*|kind:.*|platform:.*)$'
          copy_milestone: true
          pull_description: |-
            Automated backport of #${pull_number} to `${target_branch}`, triggered by a label.
