name: CI Examples Arduino IDF 5.5.x based

on:
  workflow_dispatch:      # Manually start a workflow
  push:
    paths-ignore:
    - '.github/**'        # Ignore changes towards the .github directory
    - '**.md'             # Do no build if *.md files changes

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-15]
        example:
          - "examples/arduino-blink"
          - "examples/arduino-fatfs"
          - "examples/arduino-rmt-blink"
          - "examples/arduino-usb-keyboard"
          - "examples/arduino-wifiscan"
          - "examples/arduino-zigbee-light"
#          - "examples/arduino-zigbee-switch"
          - "examples/arduino-NimBLE-SampleScan"
          - "examples/arduino-matter-light"
          - "examples/tasmota"
          - "examples/espidf-arduino-matter-light"
          - "examples/espidf-arduino-blink"
          - "examples/espidf-arduino-littlefs"
          - "examples/espidf-arduino-C6-ULP-blink"
          - "examples/espidf-blink"
          - "examples/espidf-coap-server"
          - "examples/espidf-exceptions"
          - "examples/espidf-hello-world"
          - "examples/espidf-http-request"
          - "examples/espidf-peripherals-uart"
          - "examples/espidf-peripherals-usb"
          - "examples/espidf-storage-sdcard"
          - "examples/espidf-ulp"
          - "examples/espidf-ulp-riscv"
          - "examples/espidf-ulp-lp"
        exclude:
          - os: windows-latest
            example: "examples/espidf-ulp"
          - os: windows-latest
            example: "examples/espidf-ulp-lp"
          - os: windows-latest
            example: "examples/espidf-ulp-riscv"
          - os: windows-latest
            example: "examples/espidf-arduino-C6-ULP-blink"
          - os: windows-latest
            example: "examples/espidf-arduino-matter-light"
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: "recursive"
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.13"
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "latest"
          enable-cache: false
      - name: Install dependencies
        run: |
          uv pip install --system -U https://github.com/pioarduino/platformio-core/archive/refs/tags/v6.1.18.zip
          pio pkg install --global --platform file://.
      - name: git clone Tasmota and add to examples
        if: "matrix.example == 'examples/tasmota'"
        run: |
          git clone -b development --depth 1 https://github.com/arendst/Tasmota.git examples/tasmota
          cp examples/tasmota_platformio_override.ini examples/tasmota/platformio_override.ini
      - name: Build examples
        env:
          PYTHONIOENCODING: utf-8
          PYTHONUTF8: '1'
        run: pio run -d ${{ matrix.example }}
