# Do not edit this file.
# This file is generated automatically by executing tox -e generate-workflows

name: Misc

on:
  workflow_call:

permissions:
  contents: read

env:
  CORE_REPO_SHA: main
  # Set the SHA to the branch name if the PR has a label 'prepare-release' or 'backport' otherwise, set it to 'main'
  # For PRs you can change the inner fallback ('main')
  # For pushes you change the outer fallback ('main')
  # The logic below is used during releases and depends on having an equivalent branch name in the contrib repo.
  CONTRIB_REPO_SHA: {% raw %}${{ github.event_name == 'pull_request' && (
       contains(github.event.pull_request.labels.*.name, 'prepare-release') && github.event.pull_request.head.ref ||
       contains(github.event.pull_request.labels.*.name, 'backport') && github.event.pull_request.base.ref ||
       'main'
    ) || 'main' }}{% endraw %}
  PIP_EXISTS_ACTION: w
  CONTRIB_REPO_UTIL_HTTP: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/util/opentelemetry-util-http
  CONTRIB_REPO_INSTRUMENTATION: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/opentelemetry-instrumentation
  CONTRIB_REPO_INSTRUMENTATION_REQUESTS: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-requests
  CONTRIB_REPO_INSTRUMENTATION_WSGI: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-wsgi
  CONTRIB_REPO_INSTRUMENTATION_FLASK: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-flask

jobs:
  {%- for job_data in job_datas %}

  {{ job_data }}:
    name: {{ job_data }}
    runs-on: ubuntu-latest
    timeout-minutes: 30
    {%- if job_data == "generate-workflows" %}
    if: |
      !contains(github.event.pull_request.labels.*.name, 'Skip generate-workflows')
      && github.event.pull_request.user.login != 'otelbot[bot]' && github.event_name == 'pull_request'
    {%- endif %}
    {%- if job_data == "public-symbols-check" %}
    if: |
      !contains(github.event.pull_request.labels.*.name, 'Approve Public API check')
      && github.actor != 'otelbot[bot]' && github.event_name == 'pull_request'
    {%- endif %}
    {%- if job_data == "docs" %}
    if: |
      github.event_name == 'merge_group' ||
      (github.event_name == 'pull_request' &&
      github.event.pull_request.user.login != 'otelbot[bot]')
    {%- endif %}
    steps:
      - name: Checkout repo @ SHA - ${% raw %}{{ github.sha }}{% endraw %}
        uses: actions/checkout@v4
      {%- if job_data == "tracecontext" %}

      - name: Checkout contrib repo @ ${% raw %}{{ env.CONTRIB_REPO_SHA }}{% endraw %}
        uses: actions/checkout@v4
        with:
          repository: open-telemetry/opentelemetry-python-contrib
          ref: ${% raw %}{{ env.CONTRIB_REPO_SHA }}{% endraw %}
          path: opentelemetry-python-contrib
      {%- endif %}
      {%- if job_data == "public-symbols-check" %}
        with:
          fetch-depth: 0

      - name: Checkout main
        run: git checkout main

      - name: Pull origin
        run: git pull --rebase=false origin main

      - name: Checkout pull request
        run: git checkout ${% raw %}{{ github.event.pull_request.head.sha }}{% endraw %}
      {%- endif %}

      - name: Set up Python 3.11
        uses: actions/setup-python@v5
        with:
          python-version: "3.11"

      - name: Install tox
        run: pip install tox-uv

      - name: Run tests
        run: tox -e {{ job_data }}
      {%- if job_data == "generate-workflows" %}

      - name: Check github workflows are up to date
        run: git diff --exit-code || (echo 'Generated workflows are out of date, run "tox -e generate-workflows" and commit the changes in this PR.' && exit 1)
      {%- endif %}
  {%- endfor %}
