# Copyright (c) 2022-2023 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 - Telink

on:
    push:
        branches-ignore:
            - 'dependabot/**'
    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:
    telink:
        name: Telink
        env:
            BUILD_TYPE: telink

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

        container:
            image: ghcr.io/project-chip/chip-build-telink:50
            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: telink

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

            # - name: Update Zephyr to specific revision (for developers purpose)
            #   run: scripts/run_in_build_env.sh "python3 scripts/tools/telink/update_zephyr.py 65dc1812431bf946dfc110682298acf83d63e27a"

            - name: Build example Telink (B92 retention) Air Quality Sensor App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9528a_retention-air-quality-sensor' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9528a_retention air-quality-sensor-app \
                    out/telink-tlsr9528a_retention-air-quality-sensor/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91) All Clusters App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-all-clusters' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d all-clusters-app \
                    out/telink-tlsr9518adk80d-all-clusters/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B92) All Clusters Minimal App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9528a-all-clusters-minimal' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9528a all-clusters-minimal-app \
                    out/telink-tlsr9528a-all-clusters-minimal/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91) Bridge App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-bridge' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d bridge-app \
                    out/telink-tlsr9518adk80d-bridge/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B92 retention) Contact Sensor App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9528a_retention-contact-sensor' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9528a_retention contact-sensor-app \
                    out/telink-tlsr9528a_retention-contact-sensor/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build tools required for Factory Data
              run: |
                  ./scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform linux
                  ./scripts/build/gn_gen.sh
                  ./scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE chip-cert chip-tool spake2p"
                  mv ./out/$BUILD_TYPE/chip-cert ./out/$BUILD_TYPE/chip-tool ./out/$BUILD_TYPE/spake2p ./out

            - name: clean out build output (keep tools)
              run: rm -rf ./out/telink*

            - name: Build example Telink (B91) Lighting App with OTA, RPC, Factory Data and 4Mb flash
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-light-ota-rpc-factory-data-4mb' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d lighting-app-ota-rpc-factory-data-4mb \
                    out/telink-tlsr9518adk80d-light-ota-rpc-factory-data-4mb/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output (keep tools)
              run: rm -rf ./out/telink*

            - name: Build example Telink (B92) Light Switch App with OTA, Shell, Factory Data
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9528a-light-switch-ota-shell-factory-data' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9528a light-switch-app-ota-shell-factory-data \
                    out/telink-tlsr9528a-light-switch-ota-shell-factory-data/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B92) Lock App with DFU
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9528a-lock-dfu' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9528a lock-app-dfu \
                    out/telink-tlsr9528a-lock-dfu/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91) OTA Requestor App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-ota-requestor' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d ota-requestor-app \
                    out/telink-tlsr9518adk80d-ota-requestor/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B95) Pump App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9258a-pump' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9258a pump-app \
                    out/telink-tlsr9258a-pump/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91) Pump Controller App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-pump-controller' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d pump-controller-app \
                    out/telink-tlsr9518adk80d-pump-controller/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91) Shell App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-shell' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d shell \
                    out/telink-tlsr9518adk80d-shell/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B92 retention) Smoke CO Alarm App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9528a_retention-smoke-co-alarm' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9528a_retention smoke_co_alarm-app \
                    out/telink-tlsr9528a_retention-smoke-co-alarm/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91 Mars) Temperature Measurement App with OTA
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-temperature-measurement-mars-ota' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d temperature-measurement-app-mars-ota \
                    out/telink-tlsr9518adk80d-temperature-measurement-mars-ota/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B91) Thermostat App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-thermostat' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9518adk80d thermostat \
                    out/telink-tlsr9518adk80d-thermostat/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

            - name: Build example Telink (B95) Window Covering App
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target 'telink-tlsr9258a-window-covering' build"
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    telink tlsr9258a window-covering \
                    out/telink-tlsr9258a-window-covering/zephyr/zephyr.elf \
                    /tmp/bloat_reports/

            - name: clean out build output
              run: rm -rf ./out

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