# 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 release artifacts

on:
    workflow_dispatch:
        inputs:
            releaseTag:
                description: Release Tag
                required: true

env:
    CHIP_NO_LOG_TIMESTAMPS: true
    
jobs:
    esp32:
        name: ESP32
        env:
            BUILD_DIRECTORY: examples/all-clusters-app/esp32/build
        runs-on: ubuntu-latest

        container:
            image: ghcr.io/project-chip/chip-build-esp32:47

        steps:
            - name: Checkout
              uses: actions/checkout@v4
              with:
                ref: "${{ github.event.inputs.releaseTag }}"
            - name: Bootstrap
              uses: ./.github/actions/bootstrap

            - name: Build
              run: scripts/examples/esp_example.sh all-clusters-app

            - name: Upload artifact
              run: |
                  scripts/helpers/upload_release_asset.py                  \
                     --github-repository project-chip/connectedhomeip      \
                     --github-api-token "${{ secrets.GITHUB_TOKEN }}"      \
                     --release-tag "${{ github.event.inputs.releaseTag }}" \
                     --bundle-files $BUILD_DIRECTORY/chip-all-clusters-app.flashbundle.txt \
                     --working-directory $BUILD_DIRECTORY                  \
                     --bundle-name esp32-chip-all-clusters-app

    efr32:
        name: EFR32
        env:
            SILABS_BOARD: BRD4161A
            BUILD_DIRECTORY: out/lock_app_debug/BRD4161A

        runs-on: ubuntu-latest

        container:
            image: ghcr.io/project-chip/chip-build-efr32:47
        steps:
            - name: Checkout
              uses: actions/checkout@v4
              with:
                ref: "${{ github.event.inputs.releaseTag }}"
            - name: Bootstrap
              uses: ./.github/actions/bootstrap

            - name: Build example EFR32 Lock App
              run: scripts/examples/gn_silabs_example.sh examples/lock-app/efr32/
                  out/lock_app_debug $SILABS_BOARD

            - name: Upload artifact
              run: |
                  scripts/helpers/upload_release_asset.py                     \
                     --github-repository project-chip/connectedhomeip         \
                     --github-api-token "${{ secrets.GITHUB_TOKEN }}"         \
                     --release-tag "${{ github.event.inputs.releaseTag }}"    \
                     --bundle-files $BUILD_DIRECTORY/lock_app.flashbundle.txt \
                     --working-directory $BUILD_DIRECTORY                     \
                     --bundle-name efr32-$SILABS_BOARD-chip-lock-example
