name: Doxygen → Codeberg Pages # Auto-publish Doxygen HTML to https://tmoussa.codeberg.page/ConformalLabpp/ # every time the public API or docs source changes on main. # # Pattern: mirrors mirror-to-codeberg.yml — reuses the existing # CODEBERG_TOKEN secret + HTTPS push. No new secret setup required. # # Trigger: push to main that touches code/include/**, Doxyfile, the # filter script, doc/**/*.md, README.md, or this workflow file. Also # manually triggerable via workflow_dispatch. on: push: branches: - main paths: - "code/include/**" - "Doxyfile" - "scripts/doxygen-md-filter.sh" - "doc/**/*.md" - "README.md" - "CLAUDE.md" - ".gitea/workflows/doxygen-pages.yml" workflow_dispatch: {} jobs: publish: runs-on: eulernest container: image: git.eulernest.eu/conformallab/ci-cpp:latest steps: - uses: actions/checkout@v4 - name: Configure CMake (Doxygen target only — no compiler needed) run: cmake -S code -B build - name: Build Doxygen HTML run: | cmake --build build --target doc test -f doc/doxygen/html/index.html warnings=$(wc -l < doc/doxygen/doxygen-warnings.log) echo "DOC ▸ Doxygen warnings: $warnings" if [ "$warnings" -gt 0 ]; then echo "::warning::Doxygen produced $warnings warning(s) — review doc/doxygen/doxygen-warnings.log" head -30 doc/doxygen/doxygen-warnings.log fi - name: Report Doxygen coverage run: bash scripts/doxygen-coverage.sh - name: Regenerate doc/api/headers.md from XML run: | python3 scripts/gen-headers-md.py # If the auto-generated headers.md drifted from main, note it. # This job runs on every main push so a drift only persists # for the duration of one push — the next push that lands # will fold the new headers.md back into main (via the # codeberg pages branch). For deterministic regeneration # within main itself, run `bash scripts/regen-docs.sh` # locally before pushing. if ! git diff --quiet -- doc/api/headers.md; then echo "::warning::doc/api/headers.md drifted — run scripts/regen-docs.sh locally and commit before next push" git --no-pager diff -- doc/api/headers.md | head -30 fi - name: Publish HTML to codeberg pages branch env: CODEBERG_TOKEN: ${{ secrets.CODEBERG_TOKEN }} run: | set -eu # Build the publish payload in a clean scratch dir so the # orphan branch contains only the Doxygen output (and a # marker README), never any build/source artefacts. publish_dir=$(mktemp -d) cp -r doc/doxygen/html/. "$publish_dir/" cat > "$publish_dir/README.txt" <