name: Compile Examples

# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows
on:
  push:
    paths:
      - ".github/workflows/compile-examples.yml"
      - "examples/**"
      - "**.c"
      - "**.cpp"
      - "**.h"
      - "*.S"
  pull_request:
    paths:
      - ".github/workflows/compile-examples.yml"
      - "examples/**"
      - "**.c"
      - "**.cpp"
      - "**.h"
      - "*.S"
  schedule:
    # Run every Tuesday at 8 AM UTC to catch breakage caused by changes to external resources (libraries, platforms).
    - cron: "0 8 * * TUE"
  workflow_dispatch:
  repository_dispatch:

jobs:
  build:
    name: ${{ matrix.board.fqbn }}
    runs-on: ubuntu-latest

    env:
      SKETCHES_REPORTS_PATH: sketches-reports

    strategy:
      fail-fast: false

      matrix:
        board:
          - fqbn: esp8266:esp8266:huzzah
            platforms: |
              - name: esp8266:esp8266
                source-url: https://arduino.esp8266.com/stable/package_esp8266com_index.json

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Compile examples
        uses: arduino/compile-sketches@v1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          fqbn: ${{ matrix.board.fqbn }}
          platforms: ${{ matrix.board.platforms }}
          libraries: |
            # Install the library from the local path.
            - source-path: ./
            # Additional library dependencies can be listed here.
            # See: https://github.com/arduino/compile-sketches#libraries
          sketch-paths: |
            - examples
          enable-deltas-report: true
          sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }}

      - name: Save sketches report as workflow artifact
        uses: actions/upload-artifact@v3
        with:
          if-no-files-found: error
          path: ${{ env.SKETCHES_REPORTS_PATH }}
          name: ${{ env.SKETCHES_REPORTS_PATH }}
