name: CI

on:
  push:
    branches: master
  pull_request:
    branches: master
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron: "0 3 * * 6"
  workflow_dispatch:
    inputs:
      reason:
        description: "Reason"
        required: false
        default: "Manual trigger"

jobs:
  create-strategy:
    runs-on: ubuntu-latest

    outputs:
      matrix: ${{ steps.requirements.outputs.matrix }}

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: requirements
        id: requirements
        run: |
          # Define a simple matrix with your Python version
          # Since we're using pyproject.toml with Python 3.12 requirement
          echo "matrix={\"include\": [{\"python-version\": \"3.12\"}]}" >> $GITHUB_OUTPUT

          # Print the matrix for debugging
          echo "-------------------"
          echo "Matrix: {\"include\": [{\"python-version\": \"3.12\"}]}"
          echo "-------------------"

  tests:
    needs: create-strategy
    runs-on: ubuntu-latest
    name: Test (Python ${{matrix.python-version}})
    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.create-strategy.outputs.matrix) }}

    # Simplified environment without service variables
    env:
      PYTHON_VERSION: ${{ matrix.python-version }}

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Python "${{ matrix.python-version }}"
        uses: actions/setup-python@v5
        with:
          python-version: "${{ matrix.python-version }}"
          cache: pip
          cache-dependency-path: |
            pyproject.toml

      - name: Set up uv
        uses: astral-sh/setup-uv@v6
        with:
          python-version: "${{ matrix.python-version }}"
          enable-cache: true
          cache-dependency-glob: |
            pyproject.toml
          cache-suffix: ${{ matrix.python-version }}

      - name: Show configuration
        run: |
          uv --version
          python --version
          docker --version
          docker ps

      - name: Install dependencies
        run: |
          uv sync --group tests

      - name: Run tests
        run: |
          uv run ./run-tests.sh
