]> git.sesse.net Git - bcachefs-tools-debian/blob - rust-src/src/cmd_completions.rs
create common entry point for Rust commands
[bcachefs-tools-debian] / rust-src / src / cmd_completions.rs
1 use clap::{Command, CommandFactory, Parser};
2 use clap_complete::{generate, Generator, Shell};
3 use std::ffi::{c_int, OsStr};
4 use std::io;
5
6 /// Generate shell completions
7 #[derive(clap::Parser, Debug)]
8 pub struct Cli {
9     shell: Shell,
10 }
11
12 fn print_completions<G: Generator>(gen: G, cmd: &mut Command) {
13     generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout());
14 }
15
16 pub fn cmd_completions(argv: Vec<&OsStr>) -> c_int {
17     let cli = Cli::parse_from(argv);
18     print_completions(cli.shell, &mut super::Cli::command());
19     0
20 }