# Copyright (c) 2020 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 - Linux Standalone

on:
    push:
    pull_request:

jobs:
    linux-standalone:
        name: Linux Standalone

        env:
            BUILD_TYPE: gn_linux
            BUILD_VERSION: 0.2.14
            BUILD_IMAGE: chip-build
            BUILD_ORG: connectedhomeip

        runs-on: ubuntu-latest

        container:
            image: connectedhomeip/chip-build:0.4.16
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"
                - "/tmp/output_binaries:/tmp/output_binaries"

        steps:
            - name: Checkout
              uses: actions/checkout@v2
              # Fetch depth 0 to get all history and be able to check mergepoint for bloat report
              with:
                  fetch-depth: 0
                  submodules: true
            - name: Initialize CodeQL
              uses: github/codeql-action/init@v1
              with:
                  languages: "cpp, python"
                  queries: +security-and-quality
            - name: Bootstrap
              run: scripts/build/gn_bootstrap.sh
            - name: Build example Standalone Echo Client
              run:
                  scripts/examples/gn_build_example.sh examples/chip-tool
                  out/chip_tool_debug
            - name: Build example Standalone Shell
              run:
                  scripts/examples/gn_build_example.sh examples/shell/standalone
                  out/shell_debug
            - name: Build example Standalone All Clusters Server 
              run:
                  scripts/examples/gn_build_example.sh examples/all-clusters-app/linux
                  out/all_clusters_debug bypass_rendezvous=true
            - name: Binary artifact suffix
              id: outsuffix
              uses: haya14busa/action-cond@v1.0.0
              with:
                  cond: ${{ github.event.pull_request.number == '' }}
                  if_true: "${{ github.sha }}"
                  if_false: "pull-${{ github.event.pull_request.number }}"
            - name: Uploading Binaries
              uses: actions/upload-artifact@v2
              with:
                  name:
                      ${{ env.BUILD_TYPE }}-example-build-${{
                      steps.outsuffix.outputs.value }}
                  path: |
                      out/chip_tool_debug/chip-tool
                      out/shell_debug/chip-shell
            - name: Show tree
              run: find .
            - name: Remove third_party binaries for CodeQL Analysis
              run: find out -type d -name "third_party" -exec rm -rf {} +
            - name: Remove dbus binaries for CodeQL Analysis
              run: find out -type d -name "dbus" -exec rm -rf {} +
            - name: Remove gen binaries for CodeQL Analysis
              run: find out -type d -name "gen" -exec rm -rf {} +
            - name: Perform CodeQL Analysis
              if: ${{ github.event_name == 'push' }}
              uses: github/codeql-action/analyze@v1
