# Based on
# https://github.com/NixOS/nixpkgs/blob/2566f9dc/.github/workflows/backport.yml
name: Backport
on:
  pull_request_target:
    types:
      - closed
      - labeled

permissions:
  contents: write
  pull-requests: write

jobs:
  backport:
    name: Backport Pull Request
    if: >
      vars.CI_APP_ID
      && github.event.pull_request.merged == true
      && (
        github.event.action != 'labeled'
        || startsWith(github.event.label.name, 'backport')
      )

    runs-on: ubuntu-latest
    steps:
      - name: Create GitHub App token
        uses: actions/create-github-app-token@v2
        if: vars.CI_APP_ID
        id: app-token
        with:
          app-id: ${{ vars.CI_APP_ID }}
          private-key: ${{ secrets.CI_APP_PRIVATE_KEY }}
      - uses: actions/checkout@v5
        with:
          token: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }}
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Create backport PRs
        id: backport
        uses: korthout/backport-action@v3
        with:
          # See https://github.com/korthout/backport-action#inputs
          github_token: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }}
          branch_name: backport/${target_branch}/${pull_number}
          copy_labels_pattern: .*
