mirror of
https://github.com/clap-rs/clap
synced 2024-12-13 14:22:34 +00:00
8aa7ab3e16
The main goal is to reduce the risk of people developing on the wrong release, assuming they are using something like starship to raise the visibility of the crate version. |
||
---|---|---|
.. | ||
examples | ||
src | ||
tests | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
clap_mangen
Manpage generation for
clap
Dual-licensed under Apache 2.0 or MIT.
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.
In your Cargo.toml
:
[build-dependencies]
clap_mangen = "0.1"
In your build.rs
:
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)?);
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.