119625d8cSopenharmony_ci<!-- omit in TOC -->
219625d8cSopenharmony_ci# clap_mangen
319625d8cSopenharmony_ci
419625d8cSopenharmony_ci> **Manpage generation for `clap`**
519625d8cSopenharmony_ci
619625d8cSopenharmony_ci[![Crates.io](https://img.shields.io/crates/v/clap_mangen?style=flat-square)](https://crates.io/crates/clap_mangen)
719625d8cSopenharmony_ci[![Crates.io](https://img.shields.io/crates/d/clap_mangen?style=flat-square)](https://crates.io/crates/clap_mangen)
819625d8cSopenharmony_ci[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_mangen-v0.2.10/LICENSE-APACHE)
919625d8cSopenharmony_ci[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_mangen-v0.2.10/LICENSE-MIT)
1019625d8cSopenharmony_ci
1119625d8cSopenharmony_ciDual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
1219625d8cSopenharmony_ci
1319625d8cSopenharmony_ci1. [About](#about)
1419625d8cSopenharmony_ci2. [API Reference](https://docs.rs/clap_mangen)
1519625d8cSopenharmony_ci3. [Questions & Discussions](https://github.com/clap-rs/clap/discussions)
1619625d8cSopenharmony_ci4. [CONTRIBUTING](https://github.com/clap-rs/clap/blob/clap_mangen-v0.2.10/clap_mangen/CONTRIBUTING.md)
1719625d8cSopenharmony_ci5. [Sponsors](https://github.com/clap-rs/clap/blob/clap_mangen-v0.2.10/README.md#sponsors)
1819625d8cSopenharmony_ci
1919625d8cSopenharmony_ci## About
2019625d8cSopenharmony_ci
2119625d8cSopenharmony_ciGenerate [ROFF](https://en.wikipedia.org/wiki/Roff_(software)) from a `clap::Command`.
2219625d8cSopenharmony_ci
2319625d8cSopenharmony_ci### Example
2419625d8cSopenharmony_ci
2519625d8cSopenharmony_ciWe're going to assume you want to generate your man page as part of your
2619625d8cSopenharmony_cidevelopment rather than your shipped program having a flag to generate it.
2719625d8cSopenharmony_ci
2819625d8cSopenharmony_ciRun
2919625d8cSopenharmony_ci```console
3019625d8cSopenharmony_ci$ cargo add --build clap_mangen
3119625d8cSopenharmony_ci```
3219625d8cSopenharmony_ci
3319625d8cSopenharmony_ciIn your `build.rs`:
3419625d8cSopenharmony_ci```rust,no_run
3519625d8cSopenharmony_cifn main() -> std::io::Result<()> {
3619625d8cSopenharmony_ci    let out_dir = std::path::PathBuf::from(std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?);
3719625d8cSopenharmony_ci
3819625d8cSopenharmony_ci    let cmd = clap::Command::new("mybin")
3919625d8cSopenharmony_ci        .arg(clap::arg!(-n --name <NAME>))
4019625d8cSopenharmony_ci        .arg(clap::arg!(-c --count <NUM>));
4119625d8cSopenharmony_ci
4219625d8cSopenharmony_ci    let man = clap_mangen::Man::new(cmd);
4319625d8cSopenharmony_ci    let mut buffer: Vec<u8> = Default::default();
4419625d8cSopenharmony_ci    man.render(&mut buffer)?;
4519625d8cSopenharmony_ci
4619625d8cSopenharmony_ci    std::fs::write(out_dir.join("mybin.1"), buffer)?;
4719625d8cSopenharmony_ci
4819625d8cSopenharmony_ci    Ok(())
4919625d8cSopenharmony_ci}
5019625d8cSopenharmony_ci```
5119625d8cSopenharmony_ci
5219625d8cSopenharmony_ciTip: Consider a [cargo xtask](https://github.com/matklad/cargo-xtask) instead of a `build.rs` to reduce build costs.
53