# 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 - TI CC32XX

on:
    workflow_dispatch:
    # Temporarely disabled:
    #    - TI CI runs out of disk space
    #    - Image should be updated to an Ubuntu 24.04 or higher based one (move from :54 version)
    # 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:
    cc32xx:
        name: cc32xx

        env:
            BUILD_TYPE: gn_cc32xx

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

        container:
            image: ghcr.io/project-chip/chip-build-ti:77
            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: cc32xx
            - name: Set up environment for size reports
              uses: ./.github/actions/setup-size-reports
              if: ${{ !env.ACT }}
              with:
                gh-context: ${{ toJson(github) }}

            - name: Build examples
              run: |
                  scripts/run_in_build_env.sh "\
                      ./scripts/build/build_examples.py  \
                      --target cc32xx-lock --target cc32xx-air-purifier build \
                      --copy-artifacts-to out/artifacts \
                  "
            - name: Get lock app size stats
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    cc32xx CC3235SF_LAUNCHXL lock \
                    out/artifacts/cc32xx-lock/chip-CC3235SF_LAUNCHXL-lock-example.out \
                    /tmp/bloat_reports/

            - name: Get air purifier app size stats
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    cc32xx CC3235SF_LAUNCHXL air-purifier \
                    out/artifacts/cc32xx-air-purifier/chip-CC3235SF_LAUNCHXL-air-purifier-example.out \
                    /tmp/bloat_reports/

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