name: Build with Platformio

on: [push, pull_request]

jobs:
  build-for-esp8266:
    runs-on: ubuntu-latest
    container: ghcr.io/bertmelis/pio-test-container
    strategy:
      matrix:
        example: [
          examples/largepayload-esp8266/largepayload-esp8266.ino,
          examples/ota-esp8266/ota-esp8266.ino,
          examples/simple-esp8266/simple-esp8266.ino,
          examples/simpleAsync-esp8266/simpleAsync-esp8266.ino,
          examples/tls-esp8266/tls-esp8266.ino
        ]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cache/pip
            ~/.platformio/.cache
          key: ${{ runner.os }}-pio
      - name: Download external libraries
        run: pio pkg install --global --library me-no-dev/ESPAsyncTCP
      - name: Build PlatformIO examples
        run: pio ci --lib="." --board=d1_mini
        env:
          PLATFORMIO_CI_SRC: ${{ matrix.example }}

  build-for-esp32:
    runs-on: ubuntu-latest
    container: ghcr.io/bertmelis/pio-test-container
    strategy:
      matrix:
        example: [
          examples/notask-esp32/notask-esp32.ino,
          examples/simple-esp32/simple-esp32.ino,
          examples/simpleAsync-esp32/simpleAsync-esp32.ino,
          examples/tls-esp32/tls-esp32.ino
        ]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cache/pip
            ~/.platformio/.cache
          key: ${{ runner.os }}-pio
      - name: Download external libraries
        run: pio pkg install --global --library me-no-dev/AsyncTCP
      - name: Build PlatformIO examples
        run: pio ci --lib="." --board=lolin32
        env:
          PLATFORMIO_CI_SRC: ${{ matrix.example }}

  build-for-linux:
    runs-on: ubuntu-latest
    container: ghcr.io/bertmelis/pio-test-container
    strategy:
      matrix:
        example: [
          examples/simple-linux/main.cpp
        ]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cache/pip
            ~/.platformio/.cache
          key: ${{ runner.os }}-pio
      - name: Build PlatformIO examples
        run: pio ci --lib="." --project-conf="./examples/simple-linux/platformio.ini"
        env:
          PLATFORMIO_CI_SRC: ${{ matrix.example }}
