nomicon/
lib.rs

1use std::path::Path;
2use std::process::Output;
3
4use ytil_cmd::CmdError;
5use ytil_cmd::CmdExt;
6
7/// Runs `cargo doc` with strict warning enforcement across the workspace.
8///
9/// Executes `cargo doc --all --no-deps --document-private-items` in the specified workspace root,
10/// setting `RUSTDOCFLAGS=-Dwarnings` to treat documentation warnings as errors.
11///
12/// # Errors
13/// - If the `cargo doc` command fails or exits with a non-zero status.
14/// - If documentation warnings are present (due to `-Dwarnings`).
15pub fn generate_rust_doc(workspace_root: &Path) -> Result<Output, Box<CmdError>> {
16    ytil_cmd::silent_cmd("cargo")
17        .current_dir(workspace_root.display().to_string())
18        // Using env because supplying `"--", "-D", "warnings"` doesn't seem to work.
19        .env("RUSTDOCFLAGS", "-Dwarnings")
20        .args(["doc", "--all", "--no-deps", "--document-private-items"])
21        .exec()
22        .map_err(Box::new)
23}