# This workflow builds the documentation for the repository, and publishes it to
# GitHub Pages when changes are merged into the default branch.
name: Build and publish documentation

on:
  push:
    paths:
      - ".github/workflows/publish-docs.yml"
      - "*.md"
      - "**/*.md"
      - "docs/**"
      - "include/**"
      - "src/libxrpl/**"
      - "src/xrpld/**"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

defaults:
  run:
    shell: bash

env:
  BUILD_DIR: .build
  NPROC_SUBTRACT: 2

jobs:
  publish:
    runs-on: ubuntu-latest
    container: ghcr.io/xrplf/ci/tools-rippled-documentation:sha-a8c7be1
    permissions:
      contents: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0

      - name: Get number of processors
        uses: XRPLF/actions/.github/actions/get-nproc@046b1620f6bfd6cd0985dc82c3df02786801fe0a
        id: nproc
        with:
          subtract: ${{ env.NPROC_SUBTRACT }}

      - name: Check configuration
        run: |
          echo 'Checking path.'
          echo ${PATH} | tr ':' '\n'

          echo 'Checking environment variables.'
          env | sort

          echo 'Checking CMake version.'
          cmake --version

          echo 'Checking Doxygen version.'
          doxygen --version

      - name: Build documentation
        env:
          BUILD_NPROC: ${{ steps.nproc.outputs.nproc }}
        run: |
          mkdir -p "${BUILD_DIR}"
          cd "${BUILD_DIR}"
          cmake -Donly_docs=ON ..
          cmake --build . --target docs --parallel ${BUILD_NPROC}

      - name: Publish documentation
        if: ${{ github.ref_type == 'branch' && github.ref_name == github.event.repository.default_branch }}
        uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ${{ env.BUILD_DIR }}/docs/html
