# 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-20.04
        container:
            image: connectedhomeip/chip-build-doxygen:0.6.06

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

        steps:
            - name: "Print Actor"
              run: echo ${{github.actor}}
            - uses: Wandalen/wretry.action@v1.0.15
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - 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
