为您的 CLI 应用程序渲染文档

CLI 的文档通常包括命令中的 --help 部分和手册(man)页面。

使用 clap 时,可以通过 clap_mangen 箱子自动生成这两个部分。

#[derive(Parser)]
pub struct Head {
    /// file to load
    pub file: PathBuf,
    /// how many lines to print
    #[arg(short = "n", default_value = "5")]
    pub count: usize,
}

其次,您需要使用 build.rs 在编译时从代码中应用程序的定义生成手册文件。

有一些需要注意的地方(例如您希望如何打包二进制文件),但现在我们只需将 man 文件放在 src 文件夹旁边。

use clap::CommandFactory;

#[path="src/cli.rs"]
mod cli;

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 = cli::Head::command();

    let man = clap_mangen::Man::new(cmd);
    let mut buffer: Vec<u8> = Default::default();
    man.render(&mut buffer)?;

    std::fs::write(out_dir.join("head.1"), buffer)?;

    Ok(())
}

现在,当您编译应用程序时,项目目录中将会有一个 head.1 文件。

如果您在 man 中打开它,您将能够欣赏您的免费文档。