From 1f0feb5254faa8e938ba83aff96f2b984bf65477 Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Tue, 24 Sep 2024 12:37:31 -0400 Subject: [PATCH] feat: add shell completions --- Cargo.lock | Bin 57059 -> 57303 bytes Cargo.toml | 1 + cli/Cargo.toml | 1 + cli/src/main.rs | 24 ++++++++++++++++++++++-- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7dacad727d5dd6c27045b2e87d78f25111af3dac..8b131228b66e73bcb36b3c5d00e965ed69036be1 100644 GIT binary patch delta 144 zcmaF7m-+gB<_-1Y(#iR`1v#lDsY+aBsYS(^`FRSq3Q8t=rg}z}lON6vu(LEaH#aj# zHcm51HZ!m=H?%M}NU}&aPE9pUvrIBJFgG_$Gq*HKG&e9YO*XMeN=`~jw6wHLF;6i| qGETCXe9&5qB{?UtVDd&ismTqZESu}Z&sFmP1>#{AZ+4qJ*BbzF$uLO( delta 27 jcmcb, } +#[derive(Args)] +#[command(about = "Generate shell completions", alias = "comp")] +struct Complete { + #[arg( + long, + short, + value_enum, + help = "The shell to generate completions for" + )] + pub shell: Shell, +} + fn main() { let result = run(); if let Err(err) = &result { @@ -426,9 +440,9 @@ fn run() -> Result<()> { .arg_required_else_help(true) .disable_help_subcommand(true) .disable_colored_help(false); - let cli = Commands::augment_subcommands(cli); + let mut cli = Commands::augment_subcommands(cli); - let command = Commands::from_arg_matches(&cli.get_matches())?; + let command = Commands::from_arg_matches(&cli.clone().get_matches())?; let current_dir = env::current_dir().unwrap(); let mut loader = loader::Loader::new()?; @@ -1000,6 +1014,12 @@ fn run() -> Result<()> { ); } } + + Commands::Complete(complete_options) => { + let name = cli.get_name().to_string(); + let stdout = &mut std::io::stdout(); + generate(complete_options.shell, &mut cli, name, stdout); + } } Ok(())