# Copyright (c) 2021 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 - Realtek

on:
    push:
        branches:
            - master
            - 'v*-branch'
    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:
     FreeRTOS:
        name: FREERTOS

        env:
            BUILD_TYPE: gn_FreeRTOS

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

        container:
            image: ghcr.io/project-chip/chip-build:167
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"
        steps:
            - name: Checkout
              uses: actions/checkout@v5
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                  platform: realtek
                  extra-submodule-parameters: --recursive

            - name: Detect changed paths
              uses: dorny/paths-filter@v3
              id: changed_paths
              with:
                  filters: |
                      realtek:
                        - '**/realtek/**'

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

            - name: Build rtl8777g lighting and light-switch examples
              run: |
                  scripts/run_in_build_env.sh "\
                      ./scripts/build/build_examples.py \
                      --target realtek-rtl8777g-lighting \
                      --target realtek-rtl8777g-light-switch \
                      build \
                      --copy-artifacts-to out/artifacts \
                  "
                  
            - name: Get rtl8777g lighting app size stats
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    realtek rtl8777g lighting-app \
                    out/artifacts/realtek-rtl8777g-lighting/chip-rtl8777g-lighting-app \
                    /tmp/bloat_reports/

            - name: Get rtl8777g light-switch app size stats
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    realtek rtl8777g light-switch-app \
                    out/artifacts/realtek-rtl8777g-light-switch/chip-rtl8777g-light-switch-app \
                    /tmp/bloat_reports/

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

            - name: Build other rtl8777g examples
              if: steps.changed_paths.outputs.realtek == 'true'
              run: |
                 scripts/run_in_build_env.sh "\
                    ./scripts/build/build_examples.py \
                      --target realtek-rtl8777g-lock \
                      --target realtek-rtl8777g-all-clusters \
                      --target realtek-rtl8777g-ota-requestor \
                      --target realtek-rtl8777g-thermostat \
                      --target realtek-rtl8777g-window \
                    build \
                  "