Generate structured man pages using roff-rs.
use man::prelude::*;
fn main() {
let page = Manual::new("basic")
.about("A basic example")
.author(Author::new("Alice Person").email("alice@person.com"))
.author(Author::new("Bob Human").email("bob@human.com"))
.flag(
Flag::new()
.short("-d")
.long("--debug")
.help("Enable debug mode"),
)
.flag(
Flag::new()
.short("-v")
.long("--verbose")
.help("Enable verbose mode"),
)
.option(
Opt::new("output")
.short("-o")
.long("--output")
.help("The file path to write output to"),
)
.example(
Example::new()
.text("run basic in debug mode")
.command("basic -d")
.output("Debug Mode: basic will print errors to the console")
)
.custom(
Section::new("usage note")
.paragraph("This program will overwrite any file currently stored at the output path")
)
.render();
println!("{}", page);
}
Preview by running:
$ cargo run > /tmp/app.man; man /tmp/app.man
Which outputs:
BASIC(1) General Commands Manual BASIC(1) NAME basic - A basic example SYNOPSIS basic [FLAGS] [OPTIONS] FLAGS -d, --debug Enable debug mode -v, --verbose Enable verbose mode OPTIONS -o, --output=output The file path to write output to USAGE NOTE This file will overwrite any file currently stored at the output path. EXIT STATUS 0 Successful program execution. 1 Unsuccessful program execution. 101 The program panicked. EXAMPLES run basic in debug mode $ basic -d Debug Mode: basic will print errors to the console AUTHORS Alice Person <alice@person.com> Bob Human <bob@human.com> BASIC(1)
If using cargo-edit, install with
$ cargo add man
Otherwise, install by adding to Cargo.toml file's dependency section.
MIT OR Apache-2.0