# 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 - NXP

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:
    k32w:
        name: K32W

        env:
            BUILD_TYPE: gn_k32w

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

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

            - 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 nxp-k32w0-lighting \
                      --target nxp-k32w0-lighting-factory \
                      --target nxp-k32w0-lighting-rotating-id \
                      --target nxp-k32w0-contact-sensor \
                      --target nxp-k32w0-contact-sensor-low-power \
                      --target nxp-k32w0-contact-sensor-low-power-factory \
                      --target nxp-k32w1-lighting \
                      --target nxp-k32w1-contact-sensor-low-power \
                      build \
                      --copy-artifacts-to out/artifacts \
                  "
            - name: Get lighting app size stats
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    nxp k32w0+release light \
                    out/artifacts/nxp-k32w0-lighting/chip-k32w0x-light-example.elf \
                    /tmp/bloat_reports/
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    nxp k32w1+release light \
                    out/artifacts/nxp-k32w1-lighting/chip-k32w1-light-example.elf \
                    /tmp/bloat_reports/
            - name: Get contact sensor size stats
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    nxp k32w0+release contact \
                    out/artifacts/nxp-k32w0-contact-sensor-low-power/chip-k32w0x-contact-example.elf \
                    /tmp/bloat_reports/
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                    nxp k32w1+release contact \
                    out/artifacts/nxp-k32w1-contact-sensor-low-power/chip-k32w1-contact-example.elf \
                    /tmp/bloat_reports/
            - name: Uploading Size Reports
              uses: ./.github/actions/upload-size-reports
              if: ${{ !env.ACT }}
              with:
                platform-name: K32W
