name: Reusable build context

on:  # yamllint disable-line rule:truthy
  workflow_call:
    outputs:
      # Every referenced step MUST always set its output variable,
      # either via ``Tools/build/compute-changes.py`` or in this workflow file.
      # Boolean outputs (generally prefixed ``run-``) can then later be used
      # safely through the following idiom in job conditionals and other
      # expressions. Here's some examples:
      #
      #   if: fromJSON(needs.build-context.outputs.run-tests)
      #
      #   ${{
      #        fromJSON(needs.build-context.outputs.run-tests)
      #        && 'truthy-branch'
      #        || 'falsy-branch'
      #   }}
      #
      run-android:
        description: Whether to run the Android tests
        value: ${{ jobs.compute-changes.outputs.run-android }}  # bool
      run-ci-fuzz:
        description: Whether to run the CIFuzz job
        value: ${{ jobs.compute-changes.outputs.run-ci-fuzz }}  # bool
      run-docs:
        description: Whether to build the docs
        value: ${{ jobs.compute-changes.outputs.run-docs }}  # bool
      run-ios:
        description: Whether to run the iOS tests
        value: ${{ jobs.compute-changes.outputs.run-ios }}  # bool
      run-macos:
        description: Whether to run the macOS tests
        value: ${{ jobs.compute-changes.outputs.run-macos }}  # bool
      run-tests:
        description: Whether to run the regular tests
        value: ${{ jobs.compute-changes.outputs.run-tests  }}  # bool
      run-ubuntu:
        description: Whether to run the Ubuntu tests
        value: ${{ jobs.compute-changes.outputs.run-ubuntu }}  # bool
      run-wasi:
        description: Whether to run the WASI tests
        value: ${{ jobs.compute-changes.outputs.run-wasi }}  # bool
      run-windows-msi:
        description: Whether to run the MSI installer smoke tests
        value: ${{ jobs.compute-changes.outputs.run-windows-msi }}  # bool
      run-windows-tests:
        description: Whether to run the Windows tests
        value: ${{ jobs.compute-changes.outputs.run-windows-tests }}  # bool

jobs:
  compute-changes:
    name: Create context from changed files
    runs-on: ubuntu-latest
    timeout-minutes: 10
    outputs:
      run-android: ${{ steps.changes.outputs.run-android }}
      run-ci-fuzz: ${{ steps.changes.outputs.run-ci-fuzz }}
      run-docs: ${{ steps.changes.outputs.run-docs }}
      run-ios: ${{ steps.changes.outputs.run-ios }}
      run-macos: ${{ steps.changes.outputs.run-macos }}
      run-tests: ${{ steps.changes.outputs.run-tests }}
      run-ubuntu: ${{ steps.changes.outputs.run-ubuntu }}
      run-wasi: ${{ steps.changes.outputs.run-wasi }}
      run-windows-msi: ${{ steps.changes.outputs.run-windows-msi }}
      run-windows-tests: ${{ steps.changes.outputs.run-windows-tests }}
    steps:
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: "3"

    - run: >-
        echo '${{ github.event_name }}'

    - uses: actions/checkout@v4
      with:
        persist-credentials: false
        ref: >-
          ${{
            github.event_name == 'pull_request'
            && github.event.pull_request.head.sha
            || ''
          }}

    # Adapted from https://github.com/actions/checkout/issues/520#issuecomment-1167205721
    - name: Fetch commits to get branch diff
      if: github.event_name == 'pull_request'
      run: |
        set -eux

        # Fetch enough history to find a common ancestor commit (aka merge-base):
        git fetch origin "${refspec_pr}" --depth=$(( commits + 1 )) \
          --no-tags --prune --no-recurse-submodules

        # This should get the oldest commit in the local fetched history (which may not be the commit the PR branched from):
        COMMON_ANCESTOR=$( git rev-list --first-parent --max-parents=0 --max-count=1 "${branch_pr}" )
        DATE=$( git log --date=iso8601 --format=%cd "${COMMON_ANCESTOR}" )

        # Get all commits since that commit date from the base branch (eg: main):
        git fetch origin "${refspec_base}" --shallow-since="${DATE}" \
          --no-tags --prune --no-recurse-submodules
      env:
        branch_pr: 'origin/${{ github.event.pull_request.head.ref }}'
        commits: ${{ github.event.pull_request.commits }}
        refspec_base: '+${{ github.event.pull_request.base.sha }}:remotes/origin/${{ github.event.pull_request.base.ref }}'
        refspec_pr: '+${{ github.event.pull_request.head.sha }}:remotes/origin/${{ github.event.pull_request.head.ref }}'

    # We only want to run tests on PRs when related files are changed,
    # or when someone triggers a manual workflow run.
    - name: Compute changed files
      id: changes
      run: python Tools/build/compute-changes.py
      env:
        GITHUB_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
        GITHUB_EVENT_NAME: ${{ github.event_name }}
        CCF_TARGET_REF: ${{ github.base_ref || github.event.repository.default_branch }}
        CCF_HEAD_REF: ${{ github.event.pull_request.head.sha || github.sha }}
