screen_record/
completion.rs1use clap::CommandFactory;
2use clap_complete::{Generator, Shell, generate};
3
4use crate::cli::Cli;
5
6pub fn run(args: &[String]) -> i32 {
7 match args.first().map(String::as_str) {
8 None => {
9 eprintln!("usage: screen-record completion <bash|zsh>");
10 1
11 }
12 Some("bash") if args.len() == 1 => generate_script(Shell::Bash),
13 Some("zsh") if args.len() == 1 => generate_script(Shell::Zsh),
14 Some(shell) if args.len() == 1 => {
15 eprintln!("screen-record: error: unsupported completion shell '{shell}'");
16 eprintln!("usage: screen-record completion <bash|zsh>");
17 1
18 }
19 _ => {
20 eprintln!("screen-record: error: expected `screen-record completion <bash|zsh>`");
21 1
22 }
23 }
24}
25
26fn generate_script<G: Generator>(generator: G) -> i32 {
27 let mut command = Cli::command();
28 let bin_name = command.get_name().to_string();
29 generate(generator, &mut command, bin_name, &mut std::io::stdout());
30 0
31}