# 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: Doxygen

on:
    push:
        paths:
            - "**.do[xc]"
            - "**.c[cs]?"
            - "**.cxx"
            - "**.cpp"
            - "**.c\\+\\+"
            - "**.ii"
            - "**.ixx"
            - "**.ipp"
            - "**.i\\+\\+"
            - "**.inl"
            - "**.[hH]"
            - "**.hh"
            - "**.HH"
            - "**.hxx"
            - "**.hpp"
            - "**.h\\+\\+"
            - "**.mm"
            - "**.txt"
            - "**.[ido]dl"
            - "**.java"
            - "**.d"
            - "**.php[45]?"
            - "**.inc"
            - "**.phtml"
            - "**.[mM]"
    pull_request:
        paths:
            - "**.do[xc]"
            - "**.c[cs]?"
            - "**.cxx"
            - "**.cpp"
            - "**.c\\+\\+"
            - "**.ii"
            - "**.ixx"
            - "**.ipp"
            - "**.i\\+\\+"
            - "**.inl"
            - "**.[hH]"
            - "**.hh"
            - "**.HH"
            - "**.hxx"
            - "**.hpp"
            - "**.h\\+\\+"
            - "**.mm"
            - "**.txt"
            - "**.[ido]dl"
            - "**.java"
            - "**.d"
            - "**.php[45]?"
            - "**.inc"
            - "**.phtml"
            - "**.[mM]"
    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

jobs:
    doxygen:
        name: Build Doxygen
        timeout-minutes: 5

        runs-on: ubuntu-latest
        container:
            image: connectedhomeip/chip-build-doxygen:0.7.3

        if: github.actor != 'restyled-io[bot]'

        steps:
            - name: "Print Actor"
              run: echo ${{github.actor}}
            - name: Checkout
              uses: actions/checkout@v3
            - name: Generate
              run: scripts/helpers/doxygen.sh
            - name: Extract branch name
              shell: bash
              run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
              id: extract_branch
            - name: Deploy if master
              if: steps.extract_branch.outputs.branch == 'master' && github.repository == 'project-chip/connectedhomeip'
              uses: peaceiris/actions-gh-pages@v3
              with:
                  deploy_key: ${{ secrets.DOXYGEN_DEPLOY_KEY }}
                  external_repository: project-chip/connectedhomeip-doc
                  publish_dir: ./docs/html
                  # Keep only the latest version of the documentation
                  force_orphan: true
