# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Build example - ESP32

on:
    push:
    pull_request:
    merge_group:

concurrency:
    group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
    cancel-in-progress: true

env:
    CHIP_NO_LOG_TIMESTAMPS: true
    
jobs:
    esp32:
        name: ESP32

        runs-on: ubuntu-latest
        if: github.actor != 'restyled-io[bot]'

        container:
            image: ghcr.io/project-chip/chip-build-esp32:46
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"

        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: esp32

            - name: Set up environment for size reports
              uses: ./.github/actions/setup-size-reports
              if: ${{ !env.ACT }}
              with:
                gh-context: ${{ toJson(github) }}

            - name: Build some M5Stack variations
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --enable-flashbundle \
                        --target esp32-m5stack-all-clusters \
                        build \
                        --copy-artifacts-to out/artifacts \
                     "
            - name: Prepare bloat report
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                     esp32 m5stack all-clusters-app \
                     out/esp32-m5stack-all-clusters/chip-all-clusters-app.elf \
                     /tmp/bloat_reports/
            - name: Prepare code pregen and ensure compile time pregen not possible
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/codepregen.py ./zzz_pregenerated"
                  mv scripts/codegen.py scripts/codegen.py.renamed
                  mv scripts/tools/zap/generate.py scripts/tools/zap/generate.py.renamed
            - name: Clean output
              run: rm -rf ./out
            - name: Build some M5Stack variations with pregen
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --enable-flashbundle \
                        --target esp32-m5stack-all-clusters-minimal \
                        --target esp32-m5stack-all-clusters-rpc-ipv6only \
                        --pregen-dir ./zzz_pregenerated \
                        build \
                        --copy-artifacts-to out/artifacts \
                     "
            - name: Undo code pregeneration changes
              run: |
                  rm -rf ./zzz_pregenerated
                  mv scripts/codegen.py.renamed scripts/codegen.py
                  mv scripts/tools/zap/generate.py.renamed scripts/tools/zap/generate.py 
            - name: Build example All Clusters App(Target:ESP32C3)
              run: scripts/examples/esp_example.sh all-clusters-app sdkconfig.defaults.esp32c3 esp32c3
            - name: Copy aside build products
              run: |
                  mkdir -p example_binaries/esp32-build
                  cp examples/all-clusters-app/esp32/build/chip-all-clusters-app.elf \
                     example_binaries/esp32-build/chip-all-clusters-app.elf
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                     esp32 c3devkit all-clusters-app \
                     example_binaries/esp32-build/chip-all-clusters-app.elf \
                     /tmp/bloat_reports/

            - name: Build example Pigweed App
              run: scripts/examples/esp_example.sh pigweed-app sdkconfig.defaults

            - name: Build example Lighting App (Target:ESP32H2)
              run: scripts/examples/esp_example.sh lighting-app sdkconfig.defaults.esp32h2 esp32h2

            - name: Build example Lock App (Target:ESP32C6)
              run: scripts/examples/esp_example.sh lock-app sdkconfig.defaults.esp32c6 esp32c6

            - name: Uploading Size Reports
              uses: ./.github/actions/upload-size-reports
              if: ${{ !env.ACT }}
              with:
                platform-name: ESP32

    esp32_1:
        name: ESP32_1

        runs-on: ubuntu-latest
        if: github.actor != 'restyled-io[bot]'

        container:
            image: ghcr.io/project-chip/chip-build-esp32:46
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"

        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: esp32

            - name: Build example Bridge App
              run: scripts/examples/esp_example.sh bridge-app

            - name: Build example Persistent Storage App
              run: scripts/examples/esp_example.sh persistent-storage sdkconfig.defaults

            - name: Build example Shell App
              run: scripts/examples/esp_example.sh shell sdkconfig.defaults

            - name: Build example Temperature Measurement App
              run: scripts/examples/esp_example.sh temperature-measurement-app sdkconfig.optimize.defaults

            - name: Build example OTA Requestor App
              run: scripts/examples/esp_example.sh ota-requestor-app sdkconfig.defaults

            - name: Build example OTA Provider App
              run: scripts/examples/esp_example.sh ota-provider-app sdkconfig.defaults

            - name: Build example Light Switch App (Target:ESP32C3)
              run: scripts/examples/esp_example.sh light-switch-app sdkconfig.defaults.esp32c3 esp32c3

            - name: Build example Lighting App (external platform)
              run: scripts/examples/esp_example.sh lighting-app sdkconfig.ext_plat.defaults

            - name: Build example Energy Management App
              run: scripts/examples/esp_example.sh energy-management-app sdkconfig.defaults

            - name: Build example LIT ICD App (Target:ESP32H2)
              run: scripts/examples/esp_example.sh lit-icd-app sdkconfig.defaults esp32h2
