1 use crate::transform_c_args;
2 use clap::{Command, CommandFactory, Parser};
3 use clap_complete::{generate, Generator, Shell};
4 use std::ffi::{c_char, c_int};
7 /// Generate shell completions
8 #[derive(clap::Parser, Debug)]
13 fn print_completions<G: Generator>(gen: G, cmd: &mut Command) {
14 generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout());
18 #[allow(clippy::not_unsafe_ptr_arg_deref)]
19 pub extern "C" fn cmd_completions(argc: c_int, argv: *const *const c_char) -> c_int {
20 transform_c_args!(argv, argc, argv);
21 let cli = Cli::parse_from(argv);
22 print_completions(cli.shell, &mut super::Cli::command());