119625d8cSopenharmony_ci<!-- omit in TOC --> 219625d8cSopenharmony_ci# clap_mangen 319625d8cSopenharmony_ci 419625d8cSopenharmony_ci> **Manpage generation for `clap`** 519625d8cSopenharmony_ci 619625d8cSopenharmony_ci[](https://crates.io/crates/clap_mangen) 719625d8cSopenharmony_ci[](https://crates.io/crates/clap_mangen) 819625d8cSopenharmony_ci[](https://github.com/clap-rs/clap/blob/clap_mangen-v0.2.10/LICENSE-APACHE) 919625d8cSopenharmony_ci[](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