name: PR Build

on:
  pull_request_target:
    types: [labeled, synchronize]

permissions:
  contents: read
  pull-requests: write

jobs:
  build:
    if: contains(github.event.pull_request.labels.*.name, 'needs-build')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - uses: actions/setup-go@v5
        with:
          go-version: '1.25.x'
          cache: true
      - uses: goreleaser/goreleaser-action@v6
        with:
          version: '~> v2'
          args: release --snapshot --clean --config .goreleaser-pr.yml
      - uses: actions/upload-artifact@v4
        with:
          name: task_linux_amd64
          path: dist/task_linux_amd64.tar.gz
      - uses: actions/upload-artifact@v4
        with:
          name: task_linux_arm64
          path: dist/task_linux_arm64.tar.gz
      - uses: actions/upload-artifact@v4
        with:
          name: task_darwin_amd64
          path: dist/task_darwin_amd64.tar.gz
      - uses: actions/upload-artifact@v4
        with:
          name: task_darwin_arm64
          path: dist/task_darwin_arm64.tar.gz
      - uses: actions/upload-artifact@v4
        with:
          name: task_windows_amd64
          path: dist/task_windows_amd64.zip
      - uses: actions/upload-artifact@v4
        with:
          name: checksums
          path: dist/task_checksums.txt
      - uses: peter-evans/find-comment@v3
        id: find-comment
        with:
          token: ${{ secrets.GH_PAT || github.token }}
          issue-number: ${{ github.event.pull_request.number }}
          body-includes: '📦 Build artifacts ready!'
      - uses: peter-evans/create-or-update-comment@v4
        with:
          token: ${{ secrets.GH_PAT || github.token }}
          comment-id: ${{ steps.find-comment.outputs.comment-id }}
          issue-number: ${{ github.event.pull_request.number }}
          body: |
            ## 📦 Build artifacts ready!

            Download binaries from [this workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).

            Available platforms: Linux, macOS, Windows (amd64, arm64)
          edit-mode: replace
