name: CI

on:
  pull_request:
  push:
    branches:
      - trunk
  schedule:
    - cron: "0 */12 * * *"
  workflow_dispatch:
  workflow_call:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  build-index:
    name: Build Index
    if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
    uses: ./.github/workflows/ci-build-index.yml

  check:
    name: Check Targets
    if: >
      github.event.repository.fork == false &&
        (startsWith(github.head_ref, 'renovate/') != true || github.event_name == 'workflow_call')
    uses: ./.github/workflows/bazel.yml
    with:
      name: Check Targets
      cache-name: bazel-test-file-index
      run: |
        if [ "${{ github.event_name }}" == "schedule" ] || \
        [ "${{ github.event_name }}" == "workflow_call" ] || \
        [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
          echo "Running all targets for ${{ github.event_name }} event"
          echo "//java/... //py:all //rb/... //dotnet/... //rust/..." > bazel-targets.txt
        else
          BASE_SHA="${{ github.event.pull_request.base.sha || github.event.before }}"
          HEAD_SHA="${{ github.event.pull_request.head.sha || 'HEAD' }}"
          if [ -n "$BASE_SHA" ]; then
            ./go bazel:affected_targets "${BASE_SHA}..${HEAD_SHA}" bazel-test-file-index
          else
            ./go bazel:affected_targets bazel-test-file-index
          fi
        fi
      artifact-name: check-targets
      artifact-path: bazel-targets.txt

  read-targets:
    name: Read Targets
    needs: check
    runs-on: ubuntu-latest
    outputs:
      java: ${{ steps.read.outputs.java }}
      py: ${{ steps.read.outputs.py }}
      rb: ${{ steps.read.outputs.rb }}
      dotnet: ${{ steps.read.outputs.dotnet }}
      rust: ${{ steps.read.outputs.rust }}
    steps:
      - name: Download targets
        uses: actions/download-artifact@v4
        with:
          name: check-targets
      - name: Read targets
        id: read
        env:
          COMMIT_MESSAGES: ${{ join(github.event.commits.*.message, ' ') }}
          PR_TITLE: ${{ github.event.pull_request.title }}
        run: |
          targets=$(cat bazel-targets.txt 2>/dev/null || echo "")
          check_binding() {
            local pattern=$1 tag=$2
            if [[ "$targets" == *"$pattern"* ]] || [[ "$COMMIT_MESSAGES" == *"[$tag]"* ]] || [[ "$PR_TITLE" == *"[$tag]"* ]]; then
              echo "$tag=true" >> "$GITHUB_OUTPUT"
            fi
          }
          check_binding "//java/" "java"
          check_binding "//py" "py"
          check_binding "//rb/" "rb"
          check_binding "//dotnet/" "dotnet"
          check_binding "//rust/" "rust"
  dotnet:
    name: .NET
    needs: read-targets
    uses: ./.github/workflows/ci-dotnet.yml
    if: needs.read-targets.outputs.dotnet != ''

  java:
    name: Java
    needs: read-targets
    uses: ./.github/workflows/ci-java.yml
    if: needs.read-targets.outputs.java != ''

  python:
    name: Python
    needs: read-targets
    uses: ./.github/workflows/ci-python.yml
    if: needs.read-targets.outputs.py != ''

  ruby:
    name: Ruby
    needs: read-targets
    uses: ./.github/workflows/ci-ruby.yml
    if: needs.read-targets.outputs.rb != ''

  rust:
    name: Rust
    needs: read-targets
    uses: ./.github/workflows/ci-rust.yml
    secrets:
      SELENIUM_CI_TOKEN: ${{ secrets.SELENIUM_CI_TOKEN }}
    if: needs.read-targets.outputs.rust != ''
