-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.rs
38 lines (31 loc) · 992 Bytes
/
build.rs
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
use std::{
env,
fs::{create_dir_all, File},
path::Path,
};
use clap::{CommandFactory, ValueEnum};
use clap_complete::{generate_to, Shell};
use clap_mangen::Man;
mod cli {
include!("src/cli.rs");
}
fn main() {
println!("cargo:rerun-if-env-changed=GEN_ARTIFACTS");
if let Some(dir) = env::var_os("GEN_ARTIFACTS") {
let out = &Path::new(&dir);
create_dir_all(out).unwrap();
let cmd = &mut cli::Opts::command();
Man::new(cmd.clone())
.render(&mut File::create(out.join("namaka.1")).unwrap())
.unwrap();
for subcmd in cmd.get_subcommands() {
let name = format!("namaka-{}", subcmd.get_name());
Man::new(subcmd.clone().name(&name))
.render(&mut File::create(out.join(format!("{name}.1"))).unwrap())
.unwrap();
}
for shell in Shell::value_variants() {
generate_to(*shell, cmd, "namaka", out).unwrap();
}
}
}