# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: Dev PR

on:
  # TODO: Enable this when eps1lon/actions-label-merge-conflict is available.
  # push:
  #   branches:
  #     - master
  #     - main
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize

concurrency:
  group: ${{ github.workflow }}-${{ github.repository }}-${{ github.event.number }}
  cancel-in-progress: true

permissions:
  contents: read
  pull-requests: write
  issues: write
  
jobs:
  process:
    name: Process
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          repository: apache/arrow
          ref: main
          persist-credentials: false

      - name: Add Issue link
        if: |
          (github.event.action == 'opened' ||
           github.event.action == 'edited')
        uses: actions/github-script@v8
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const script = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/dev_pr/link.js`);
            script({github, context});

      - name: Check title
        if: |
          (github.event.action == 'opened' ||
           github.event.action == 'edited')
        uses: actions/github-script@v8
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const script = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/dev_pr/title_check.js`);
            script({github, context});

      - name: Check Issue
        if: |
          (github.event.action == 'opened' ||
           github.event.action == 'edited')
        uses: actions/github-script@v8
        with:
          debug: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const script = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/dev_pr/issue_check.js`);
            script({github, context});

      - name: Assign GitHub labels
        if: |
          (github.event.action == 'opened' ||
           github.event.action == 'synchronize')
        uses: actions/labeler@v6
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          configuration-path: .github/workflows/dev_pr/labeler.yml
          sync-labels: true

      # TODO: Enable this when eps1lon/actions-label-merge-conflict is available.
      # - name: Checks if PR needs rebase
      #   if: |
      #     github.event_name == 'push' ||
      #     (github.event_name == 'pull_request_target' &&
      #        (github.event.action == 'opened' ||
      #         github.event.action == 'synchronize'))
      #   uses: eps1lon/actions-label-merge-conflict@releases/2.x
      #   with:
      #     dirtyLabel: "needs-rebase"
      #     repoToken: "${{ secrets.GITHUB_TOKEN }}"
