clap/clap_mangen
renovate[bot] 14fd853fb9
chore(deps): update compatible (dev) (#5192)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-01 01:03:46 +00:00
..
examples fix: Make arg!(--flag <value>) optional by default 2022-09-12 17:10:01 -05:00
src chore: Remove dup code in mangen 2023-05-03 20:37:51 -04:00
tests fix(mangen): Avoid spurious value for derive arg 2023-01-16 12:04:43 -05:00
Cargo.toml chore(deps): update compatible (dev) (#5192) 2023-11-01 01:03:46 +00:00
CHANGELOG.md chore: Release 2023-10-24 13:25:07 -05:00
CONTRIBUTING.md fix(man): Rename crate to match style 2022-02-07 20:20:01 -06:00
LICENSE-APACHE fix(man): Rename crate to match style 2022-02-07 20:20:01 -06:00
LICENSE-MIT docs(license): Update years/holders 2022-06-27 12:55:09 -05:00
README.md chore: Release 2023-10-24 13:25:07 -05:00

clap_mangen

Manpage generation for clap

Crates.io Crates.io License License

Dual-licensed under Apache 2.0 or MIT.

  1. About
  2. API Reference
  3. Questions & Discussions
  4. CONTRIBUTING
  5. Sponsors

About

Generate ROFF from a clap::Command.

Example

We're going to assume you want to generate your man page as part of your development rather than your shipped program having a flag to generate it.

Run

$ cargo add --build clap_mangen

In your build.rs:

fn main() -> std::io::Result<()> {
    let out_dir = std::path::PathBuf::from(std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?);

    let cmd = clap::Command::new("mybin")
        .arg(clap::arg!(-n --name <NAME>))
        .arg(clap::arg!(-c --count <NUM>));

    let man = clap_mangen::Man::new(cmd);
    let mut buffer: Vec<u8> = Default::default();
    man.render(&mut buffer)?;

    std::fs::write(out_dir.join("mybin.1"), buffer)?;

    Ok(())
}

Tip: Consider a cargo xtask instead of a build.rs to reduce build costs.