Skip to main content

pubhubs/cli/
doc.rs

1use std::ffi::OsString;
2
3use anyhow::{Result, ensure};
4
5#[derive(clap::Args, Debug)]
6pub struct DocArgs {
7    /// Arguments forwarded to `cargo doc` (e.g. `--open`, `--document-private-items`, `--no-deps`).
8    #[arg(trailing_var_arg = true, allow_hyphen_values = true)]
9    cargo_args: Vec<OsString>,
10}
11
12impl DocArgs {
13    pub fn run(self, _spec: &mut clap::Command) -> Result<()> {
14        let manifest = env!("CARGO_MANIFEST_DIR");
15        let katex_hdr = format!("{manifest}/docs/assets/rustdoc-include-katex-header.html");
16        let status = std::process::Command::new(env!("CARGO"))
17            .current_dir(manifest)
18            .arg("doc")
19            .args(&self.cargo_args)
20            .env("RUSTDOCFLAGS", format!("--html-in-header {katex_hdr}"))
21            .status()?;
22        ensure!(status.success(), "cargo doc exited with {status}");
23        Ok(())
24    }
25}