name: 'Generate documentation with Doxygen'

on:
  push:
    branches:
      - dev
  pull_request:

env:
  TARGETS: f7
  DEFAULT_TARGET: f7

jobs:
  check-secret:
    if: ${{ github.event.pull_request.head.repo.fork == false }}
    runs-on: ubuntu-latest
    outputs:
      s3-valid-config: ${{ steps.check.outputs.s3-valid-config }}

    steps:
      - name: 'Check if S3 key exists'
        id: check
        run: |
          if [[ -z "${{ secrets.FW_DOCS_AWS_ACCESS_KEY }}" || -z "${{ secrets.FW_DOCS_AWS_SECRET_KEY }}" || -z "${{ secrets.FW_DOCS_AWS_BUCKET }}" ]]; then
            echo "s3-valid-config=false" >> $GITHUB_OUTPUT;
          else
            echo "s3-valid-config=true" >> $GITHUB_OUTPUT;
          fi

  doxygen:
    if: ${{ github.event.pull_request.head.repo.fork == false }}
    runs-on: ubuntu-latest
    needs: check-secret
    steps:
      - name: 'Wipe workspace'
        run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;

      - name: 'Checkout code'
        uses: actions/checkout@v4
        with:
          submodules: true
          fetch-depth: 1
          ref: ${{ github.event.pull_request.head.sha }}

      - name: 'Get commit details'
        id: names
        run: |
          if [[ ${{ github.event_name }} == 'pull_request' ]]; then
            TYPE="pull"
          elif [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
            TYPE="tag"
          else
            TYPE="other"
          fi
          python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"

      - name: 'Generate documentation'
        uses: mattnotmitt/doxygen-action@edge
        env:
          DOXY_SRC_ROOT: "${{ github.workspace }}"
          DOXY_CONFIG_DIR: "${{ github.workspace }}/documentation/doxygen"
          DOXY_OUTPUT_DIR: "${{ github.workspace }}/documentation/doxygen/build"
        with:
          working-directory: 'documentation/'
          doxyfile-path: './doxygen/Doxyfile-awesome.cfg'

      - name: 'Upload documentation'
        if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/dev' && needs.check-secret.outputs.s3-valid-config == 'true' }}
        uses: jakejarvis/s3-sync-action@v0.5.1
        env:
          AWS_S3_BUCKET: "${{ secrets.FW_DOCS_AWS_BUCKET }}"
          AWS_ACCESS_KEY_ID: "${{ secrets.FW_DOCS_AWS_ACCESS_KEY }}"
          AWS_SECRET_ACCESS_KEY: "${{ secrets.FW_DOCS_AWS_SECRET_KEY }}"
          AWS_REGION: "${{ secrets.FW_DOCS_AWS_REGION }}"
          SOURCE_DIR: "./documentation/doxygen/build/html"
          DEST_DIR: "${{steps.names.outputs.branch_name}}"
        with:
          args: "--delete"
