-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.rs
More file actions
47 lines (35 loc) · 1.22 KB
/
Copy pathbuild.rs
File metadata and controls
47 lines (35 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#![allow(missing_docs)]
#[path = "src/cli/mod.rs"]
mod cli;
use clap::CommandFactory;
/// Generates man pages for the CLI
fn generate_man_pages() -> std::io::Result<()> {
let out_dir = std::path::PathBuf::from(
std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?,
);
let cmd = cli::Args::command();
let name = cmd.get_name();
// main man page
let mut buffer = Vec::default();
clap_mangen::Man::new(cmd.clone()).render(&mut buffer)?;
std::fs::write(out_dir.join(format!("{name}.1")), buffer)?;
// subcommand man pages
for subcmd in cmd.get_subcommands().filter(|c| !c.is_hide_set()) {
let subcmd_name = format!("{name}-{}", subcmd.get_name());
let subcmd = subcmd.clone().name(&subcmd_name);
let mut buffer = Vec::default();
clap_mangen::Man::new(subcmd)
.title(subcmd_name.to_uppercase())
.render(&mut buffer)?;
std::fs::write(out_dir.join(subcmd_name + ".1"), buffer)?;
}
Ok(())
}
fn main() -> std::io::Result<()> {
if let Ok(val) = std::env::var("NIX_RELEASE_VERSION") {
println!("cargo:rustc-env=CARGO_PKG_VERSION={val}");
}
println!("cargo:rerun-if-env-changed=NIX_RELEASE_VERSION");
println!("cargo:rerun-if-changed=src/cli");
generate_man_pages()
}