2022-01-28 20:55:55 +00:00
|
|
|
<!-- omit in TOC -->
|
2022-02-08 02:19:59 +00:00
|
|
|
# clap_mangen
|
2022-01-28 20:55:55 +00:00
|
|
|
|
|
|
|
> **Manpage generation for `clap`**
|
|
|
|
|
2022-02-08 02:19:59 +00:00
|
|
|
[![Crates.io](https://img.shields.io/crates/v/clap_mangen?style=flat-square)](https://crates.io/crates/clap_mangen)
|
|
|
|
[![Crates.io](https://img.shields.io/crates/d/clap_mangen?style=flat-square)](https://crates.io/crates/clap_mangen)
|
2022-04-20 13:51:43 +00:00
|
|
|
[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_mangen-v0.1.6/LICENSE-APACHE)
|
|
|
|
[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_mangen-v0.1.6/LICENSE-MIT)
|
2022-01-28 20:55:55 +00:00
|
|
|
|
|
|
|
Dual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
|
|
|
|
|
|
|
|
1. [About](#about)
|
2022-02-08 02:19:59 +00:00
|
|
|
2. [API Reference](https://docs.rs/clap_mangen)
|
2022-01-28 20:55:55 +00:00
|
|
|
3. [Questions & Discussions](https://github.com/clap-rs/clap/discussions)
|
2022-04-20 13:51:43 +00:00
|
|
|
4. [CONTRIBUTING](https://github.com/clap-rs/clap/blob/clap_mangen-v0.1.6/clap_mangen/CONTRIBUTING.md)
|
|
|
|
5. [Sponsors](https://github.com/clap-rs/clap/blob/clap_mangen-v0.1.6/README.md#sponsors)
|
2022-01-28 20:55:55 +00:00
|
|
|
|
|
|
|
## About
|
|
|
|
|
2022-02-12 03:48:29 +00:00
|
|
|
Generate [ROFF](https://en.wikipedia.org/wiki/Roff_(software)) from a `clap::Command`.
|
2022-02-08 15:59:57 +00:00
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
In your `Cargo.toml`:
|
|
|
|
```toml
|
|
|
|
[build-dependencies]
|
|
|
|
clap_mangen = "0.1"
|
|
|
|
```
|
|
|
|
|
|
|
|
In your `build.rs`:
|
|
|
|
```rust,no_run
|
|
|
|
fn main() -> std::io::Result<()> {
|
|
|
|
let out_dir = std::path::PathBuf::from(std::env::var_os("OUT_DIR").ok_or_else(|| std::io::ErrorKind::NotFound)?);
|
|
|
|
|
2022-02-14 21:47:20 +00:00
|
|
|
let cmd = clap::Command::new("mybin")
|
2022-02-08 15:59:57 +00:00
|
|
|
.arg(clap::arg!(-n --name <NAME>))
|
|
|
|
.arg(clap::arg!(-c --count <NUM>));
|
|
|
|
|
2022-02-14 21:47:20 +00:00
|
|
|
let man = clap_mangen::Man::new(cmd);
|
2022-02-08 15:59:57 +00:00
|
|
|
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](https://github.com/matklad/cargo-xtask) instead of a `build.rs` to reduce build costs.
|