name: esp32 port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'shared/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/esp32/**'

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build_idf:
    strategy:
      fail-fast: false
      matrix:
        ci_func:  # names are functions in ci.sh
          - esp32_build_cmod_spiram_s2
          - esp32_build_s3_c3
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v4

    - id: idf_ver
      name: Read the ESP-IDF version
      run: source tools/ci.sh && echo "IDF_VER=$IDF_VER" | tee "$GITHUB_OUTPUT"

    - name: Cached ESP-IDF install
      id: cache_esp_idf
      uses: actions/cache@v4
      with:
        path: |
          ./esp-idf/
          ~/.espressif/
          !~/.espressif/dist/
          ~/.cache/pip/
        key: esp-idf-${{ steps.idf_ver.outputs.IDF_VER }}

    - name: Install ESP-IDF packages
      if: steps.cache_esp_idf.outputs.cache-hit != 'true'
      run: source tools/ci.sh && ci_esp32_idf_setup

    - name: ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: esp32-${{ matrix.ci_func }}

    - name: Build ci_${{matrix.ci_func }}
      run: source tools/ci.sh && ci_${{ matrix.ci_func }}
