name: Build

on: [push, pull_request]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        environments:
          - "rfbridge"
          - "rfbridge-direct"
          - "esp32dev-all-test"
          - "esp32dev-rf"
          - "esp32dev-pilight-cc1101"
          - "esp32dev-somfy-cc1101"
          - "esp32dev-pilight-somfy-cc1101"
          - "esp32dev-weatherstation"
          - "esp32dev-gf-sun-inverter"
          - "esp32dev-ir"
          - "esp32dev-ble"
          - "esp32dev-ble-mqtt-undecoded"
          - "esp32dev-ble-aws"
          - "esp32feather-ble"
          - "esp32-lolin32lite-ble"
          - "esp32-olimex-gtw-ble-eth"
          - "esp32-olimex-gtw-ble-poe"
          - "esp32-olimex-gtw-ble-poe-iso"
          - "esp32-wt32-eth01-ble-eth"
          - "esp32-olimex-gtw-ble-wifi"
          - "esp32-m5stick-ble"
          - "esp32-m5stack-ble"
          - "esp32-m5tough-ble"
          - "esp32-m5stick-c-ble"
          - "esp32-m5stick-cp-ble"
          - "esp32-m5atom-matrix"
          - "esp32-m5atom-lite"
          - "esp32dev-rtl_433"
          - "esp32doitv1-aithinker-r01-sx1278"
          - "heltec-rtl_433"
          - "heltec-ble"
          - "lilygo-rtl_433"
          - "lilygo-ble"
          - "esp32dev-multi_receiver"
          - "tinypico-ble"
          - "ttgo-lora32-v1-868"
          - "ttgo-lora32-v1-915"
          - "ttgo-t-beam"
          - "heltec-wifi-lora-32-868"
          - "heltec-wifi-lora-32-915"
          - "shelly-plus1"
          - "nodemcuv2-all-test"
          - "nodemcuv2-fastled-test"
          - "nodemcuv2-2g"
          - "nodemcuv2-ir"
          - "nodemcuv2-rs232"
          - "avatto-bakeey-ir"
          - "nodemcuv2-rf"
          - "nodemcuv2-rf-cc1101"
          - "nodemcuv2-somfy-cc1101"
          - "manual-wifi-test"
          - "nodemcuv2-mqtt-fw-test"
          - "rf-wifi-gateway"
          - "nodemcuv2-rf2"
          - "nodemcuv2-rf2-cc1101"
          - "nodemcuv2-pilight"
          - "nodemcuv2-weatherstation"
          - "sonoff-basic"
          - "sonoff-basic-rfr3"
          - "atmega-all-test"
          - "uno-rf"
          - "uno-fastled"
          - "esp32dev-ble-datatest"
          - "esp32s3-dev-c1-ble"
          - "esp32c3-dev-m1-ble"
          - "airm2m_core_esp32c3"
          - "lolin_c3_mini"
          - "thingpulse-espgateway"
          - "thingpulse-espgateway-ethernet"
    runs-on: ubuntu-latest
    name: Build with PlatformIO
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.x"
      - name: Install platformio
        run: |
          python -m pip install --upgrade pip
          pip install platformio
      - name: Run PlatformIO
        run: platformio run -e ${{ matrix.environments }}
      - name: Upload Assets
        uses: actions/upload-artifact@v3
        with:
          name: ${{ matrix.environments }}
          path: |
            .pio/build/*/firmware.bin
            .pio/build/*/partitions.bin
          retention-days: 7

  documentation:
    runs-on: ubuntu-latest
    name: Create the documentation
    steps:
      - uses: actions/checkout@v3
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "14.x"
      - name: Install build dependencies
        run: npm install
      - name: Build documentation
        run: npm run docs:build
