use crate::infra::driving::cli::errors::{die1, CliError};
use crate::infra::driving::cli::helpers::required_str;
use crate::infra::driving::cli::OutputFormat;
use clap::{ArgMatches, Command};
pub(in super::super) fn execute_completions(
matches: &ArgMatches,
app: &mut Command,
output_fmt: OutputFormat,
) {
use clap_complete::{generate, shells};
let shell = required_str(matches, "shell");
let bin_name = app.get_name().to_string();
let mut stdout = std::io::stdout();
match shell {
"bash" => generate(shells::Bash, app, &bin_name, &mut stdout),
"zsh" => generate(shells::Zsh, app, &bin_name, &mut stdout),
"fish" => generate(shells::Fish, app, &bin_name, &mut stdout),
other => {
die1(
CliError::new(format!("unknown shell '{other}'"))
.kind("validation")
.hint("Supported: bash, zsh, fish"),
output_fmt,
);
}
}
}