wasmer_cli/commands/
gen_completions.rs1use super::WasmerCmd;
2use clap::CommandFactory;
3use clap_complete::{Shell, generate};
4use std::fs::OpenOptions;
5
6#[derive(Debug, Clone, clap::Parser)]
7pub struct CmdGenCompletions {
8 pub shell: Shell,
10
11 #[clap(long)]
13 pub out: Option<String>,
14}
15
16impl CmdGenCompletions {
17 pub fn execute(&self) -> anyhow::Result<()> {
18 let mut cmd = WasmerCmd::command();
19
20 let name = std::env::args().next().unwrap();
21 if let Some(out) = &self.out {
22 let mut f = OpenOptions::new()
23 .truncate(true)
24 .create(true)
25 .write(true)
26 .open(out)?;
27 generate(self.shell, &mut cmd, name, &mut f);
28 Ok(())
29 } else {
30 generate(self.shell, &mut cmd, name, &mut std::io::stdout());
31 Ok(())
32 }
33 }
34}