# Copyright (c) 2024 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 - NuttX

on:
  # NuttX disabled: it maintains an out-of-source build that cannot be fixed by SDK updates.
  #
  # In particular the build is NOT valid:
  #   https://github.com/apache/nuttx-apps/blob/f000ed733fc749004cbf0922fbf036abedbe91cf/netutils/connectedhomeip/CMakeLists.txt#L175
  #
  # adds `src/app/util/mock` as standard includes, which essentially overrides real light example builds.
  #
  # Will need re-enabling once NuttX integrations are more stable and SDK CI can be fixed without requiring upstream NuttX changes.
  #
  # push:
  #   branches:
  #     - master
  #     - 'v*-branch'
  # pull_request:
  # merge_group:
  workflow_dispatch:

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_LOG_TIMESTAMPS: false

jobs:
  nuttx:
    name: NuttX

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

    container:
      image: ghcr.io/project-chip/chip-build-nuttx:200
      volumes:
        - "/tmp/bloat_reports:/tmp/bloat_reports"
    steps:
      - name: Checkout
        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
      - name: Checkout submodules & Bootstrap
        uses: ./.github/actions/checkout-submodules-and-bootstrap
        with:
          platform: nuttx
          extra-submodule-parameters: " --recursive"
      - name: Build example simulator NuttX Lighting App
        run: |
          ./scripts/run_in_build_env.sh \
            "./scripts/build/build_examples.py \
              --target nuttx-x64-light \
              build \
            "
      - name: Notify Slack on Failure
        if: failure()
        uses: ./.github/actions/notify-slack-failure
        with:
          slack-webhook: ${{ secrets.SWTT_SLACK_WEBHOOK }}
