06-为 CLI 应用生成文档

渲染 CLI 帮助与文档

译文 · 基于 Command Line Applications in Rust

为 CLI 应用生成文档

原文链接: https://rust-cli.github.io/book/in-depth/docs.html

CLI 的文档通常包括命令中的 --help 部分,以及一份手册(man)页。

两者都可以在使用 clap 时通过 clap_mangen crate 自动生成。

1
2
3
4
5
6
7
8
#[derive(Parser)]
pub struct Head {
    /// 要加载的文件
    pub file: PathBuf,
    /// 要打印多少行
    #[arg(short = "n", default_value = "5")]
    pub count: usize,
}

其次,你需要使用 build.rs,在编译时根据代码中对应用的定义生成手册文件。

需要注意几件事(例如你想如何打包二进制),但现在我们简单地把 man 文件放在 src 文件夹旁边。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
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 打开它,就能欣赏到这份免费文档了。

最后修改 August 11, 2026: 更新 (70a5af133)