為你的 CLI 應用程式呈現文件

CLI 的說明文件通常包含命令中的 --help 說明和手冊 (man) 頁面。

透過 clapclap_mangen crate,當你使用時就可以自動產生這些說明。

#[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 開啟它,就可以欣賞你的免費說明文件了。