Documentation generation produces consumable output in one command

Building the docs target now generates the reference and leaves finished
documents in the build tree's docs directory: pdf/ holds the compiled
PDF, html/ holds the browsable reference when that format is enabled.
Doxygen and LaTeX work under docs/tmp/, which clean removes along with
the rest of the tree.

The reference has a front page and a structure. The markdown documents
in docs/ are part of the input, OVERVIEW.md becomes the landing page,
and the rest follow as chapters ahead of the namespace, class, and file
reference. The module contract, previously a plain comment block
invisible to Doxygen, is a page in its own right.

Struct and enum members throughout the headers carry documentation, on
their own lines above what they describe.
This commit is contained in:
2026-08-15 20:19:26 -04:00
parent 17acad2b02
commit 1cd79e79f3
8 changed files with 183 additions and 114 deletions

View File

@@ -32,22 +32,33 @@
/** @brief A libdpm-core context: configuration, logging, module registry */
struct dpm_ctx {
/** Directory the .conf files were read from. */
std::string config_dir;
/** Directory modules are loaded from. */
std::string module_path;
/** Target root for package operations. */
std::string root;
int log_level = DPM_LOG_INFO;
bool write_to_log = false;
/** Messages above this level are dropped. */
int log_level = DPM_LOG_INFO;
/** Whether to append messages to log_file. */
bool write_to_log = false;
/** Path of the log file. */
std::string log_file;
/* config[module][section][key] = value */
/** Configuration store, addressed as config[module][section][key]. */
std::map<std::string,
std::map<std::string,
std::map<std::string, std::string>>> config;
/* validated modules, keyed by name; loaded at most once per ctx */
/** Validated modules keyed by name; each is loaded at most once. */
std::map<std::string, std::unique_ptr<dpm_module>> modules;
/** Reason for the most recent failure. */
std::string last_error;
};