clap/clap_mangen
Ed Page c9eef44213 fix: Make arg!(--flag <value>) optional by default
This was ported over from the usage parser which modeled after docopt.
We just never got around to implementing the rest of the syntax.

However, when considering this as a standalone feature, an
`arg!(--flag <value>)`, outside of other context, should be optional.
This is how the help would display it.

Fixes #4206
2022-09-12 17:10:01 -05:00
..
examples fix: Make arg!(--flag <value>) optional by default 2022-09-12 17:10:01 -05:00
src feat: Open the door for user styling in the future 2022-08-24 18:17:42 -05:00
tests fix: Deprecate Command::trailing_var_arg 2022-09-06 19:41:17 -05:00
Cargo.toml chore: Update dependencies 2022-09-01 07:09:32 -05:00
CHANGELOG.md chore: Release 2022-06-28 08:04:18 -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 2022-06-28 08:04:18 -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.

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.