Ответ 1
В настоящее время я знаю, что лучше всего использовать контейнер man. Это все еще в стадии разработки, и добавление улучшенной поддержки генерации man-страниц является областью, над которой активно работает рабочая группа CLI.
Как более подробно описано в README, man
позволяет генерировать справочные страницы из синтаксиса, например:
use man::prelude::*;
fn main() {
let page = Manual::new("basic")
.about("A basic example")
.author(Author::new("Alice Person").email("[email protected]"))
.author(Author::new("Bob Human").email("[email protected]"))
.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);
}