Repository navigation
docs: add doxygen pages, deployed to GitHub Pages - #44
Conversation
Generate an API reference with doxygen, with README.md as the main page and the doxygen-awesome theme, similar to EDM4eic. The Doxyfile is configured by CMake; the docs target is enabled with -DGENERATE_DOCS=ON. CI builds the docs in eic-shell on every run and deploys them to GitHub Pages from main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Addresses the CodeQL actions/unpinned-tag alerts for cvmfs-contrib/github-action-cvmfs and eic/run-cvmfs-osg-eic-shell in all jobs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
An unresolved moderate finding remains, where an explicit GENERATE_DOCS=ON with missing Doxygen only emits a STATUS message and later causes a cryptic build failure on the docs target.
1 open issue
What changed in this PR
This PR adds a Doxygen-based API reference for the algorithms framework and wires it up for automated publishing to GitHub Pages, mirroring the setup used by EDM4eic. Since the headers currently lack doc comments, Doxygen is configured to document all entities with source browsing and class/include diagrams, themed with the vendored doxygen-awesome sidebar theme. It fits into the existing CMake build (via a new GENERATE_DOCS option and docs target) and the existing eic-shell CI workflow (via new build-docs/deploy-docs jobs).
Changes:
- Added Doxygen config (
docs/Doxyfile.in, configured by CMake), the vendored doxygen-awesome theme + custom header/CSS, and aGENERATE_DOCSCMake option that defines adocstarget. - Added
build-docs(artifact on every run) anddeploy-docs(Pages publish frommain) CI jobs. - Added a README "Documentation" section and switched the
AlgorithmSvcheading to backticks for correct Doxygen rendering.
| File | Description |
|---|---|
README.md |
Adds a Documentation section with local build steps; switches <code> to backticks so the heading renders in Doxygen. |
docs/Doxyfile.in |
CMake-templated Doxygen config; output build/docs/html, README as main page, diagrams enabled. |
docs/doxygen-custom/header.html |
Custom HTML header with GitHub corner link and OpenGraph metadata. |
docs/doxygen-custom/custom.css |
Small custom styles for the GitHub corner and project number spacing. |
docs/doxygen-awesome.css |
Vendored third-party theme (MIT) — not reviewed for style. |
docs/doxygen-awesome-sidebar-only.css |
Vendored third-party sidebar theme (MIT); --side-nav-fixed-width: 335px matches TREEVIEW_WIDTH. |
CMakeLists.txt |
Adds GENERATE_DOCS option, configures the Doxyfile, and defines the docs custom target. |
.github/workflows/linux-eic-shell.yml |
Adds build-docs and deploy-docs jobs; reuses existing env vars and action versions. |
I found the PR to be in good shape overall. The output path (build/docs/html/) is consistent across the Doxyfile, CMake, CI artifact, and README; the workflow-level env variables and action versions are consistent with existing usage in the same file; and the vendored theme files are properly license-headered. I left one optional best-practices note on the CMake fallback message when Doxygen is missing.
Review effort: Balanced
GENERATE_DOCS is opt-in, so fail at configure time when doxygen or dot is missing instead of leaving the docs target undefined. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Briefly, what does this PR introduce?
A Doxygen API reference for algorithms, set up like the one for EDM4eic:
docs/Doxyfile.in, configured by CMake intobuild/Doxyfile.README.mdis the main page. Since the headers have no doc comments yet, it documents all entities, includes source browsing, and draws class and include diagrams.docs/), with a custom header that links to this repo.GENERATE_DOCSCMake option (defaultOFF) that adds adocstarget:cmake -B build -S . -DGENERATE_DOCS=ON cmake --build build --target docsbuild-docsCI job that runs in eic-shell, which already ships doxygen and graphviz, and uploads the HTML as adocsartifact on every run. Adeploy-docsjob publishes it to GitHub Pages frommain.<code>AlgorithmSvc</code>changed to backticks so the heading renders in doxygen.Tested locally in
eic_xl:nightly. The only doxygen warnings are about thefmt::formatter/fmt::is_rangespecializations inproperty.h, whose enclosingfmtnamespace isn't in the input.Before merging
Repository settings → Pages → Source must be set to GitHub Actions, or
deploy-docswill fail onmain.What kind of change does this PR introduce?
🤖 Generated with Claude Code