-
Notifications
You must be signed in to change notification settings - Fork 4
/
build.rs
28 lines (22 loc) · 978 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
use clap::{Command, IntoApp};
use clap_complete::Shell;
use std::fs::File;
use std::path::Path;
include!("src/cli.rs");
fn generate(s: Shell, app: &mut Command, outdir: &Path, file: &str) {
let destfile = outdir.join(file);
println!("dest: {}", destfile.display());
std::fs::create_dir_all(destfile.parent().unwrap()).unwrap();
let mut dest = File::create(destfile).unwrap();
clap_complete::generate(s, app, "btmeister", &mut dest);
}
fn main() {
let mut app = Options::command();
app.set_bin_name("btmeister");
let outdir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("target/completions/");
generate(Shell::Bash, &mut app, &outdir, "bash/btmeister");
generate(Shell::Elvish, &mut app, &outdir, "elvish/btmeister");
generate(Shell::Fish, &mut app, &outdir, "fish/btmeister");
generate(Shell::PowerShell, &mut app, &outdir, "powershell/btmeister");
generate(Shell::Zsh, &mut app, &outdir, "zsh/_btmeister");
}