clap/clap_mangen
Ed Page 77542a1138 refactor: Reduce visibility on App members
The long term goals are
- Easier refactoring
- Identify needs for reflection API

Shorter term, if I want to rename `App` to `Command` and deprecate
`App`, it will mark all member access as deprecated.  This works around
that.

I gave up in exploring abstractions when it came to `MKeyMap` access.
This can be refined in the future.
2022-02-14 14:17:48 -06:00
..
examples fix(man): Rename crate to match style 2022-02-07 20:20:01 -06:00
src refactor: Reduce visibility on App members 2022-02-14 14:17:48 -06:00
tests fix(man): Rename crate to match style 2022-02-07 20:20:01 -06:00
Cargo.toml chore: Release 2022-02-08 10:28:40 -06:00
CHANGELOG.md chore: Release 2022-02-08 10:28:40 -06: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 fix(man): Rename crate to match style 2022-02-07 20:20:01 -06:00
README.md docs(man): Fix links 2022-02-10 13:54:29 -06: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::App.

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 app = clap::App::new("mybin")
        .arg(clap::arg!(-n --name <NAME>))
        .arg(clap::arg!(-c --count <NUM>));

    let man = clap_mangen::Man::new(app);
    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.