use crate::cli::Cli;
use clap::CommandFactory;
use clap_complete::{Shell, generate};
use std::io;
pub fn cmd_generate_completion(shell: Option<String>) -> Result<(), Box<dyn std::error::Error>> {
let shell_type = match shell.as_deref() {
Some("bash") => Shell::Bash,
Some("zsh") => Shell::Zsh,
Some("fish") => Shell::Fish,
Some("powershell") | Some("pwsh") => Shell::PowerShell,
Some("elvish") => Shell::Elvish,
_ => {
Shell::Bash
}
};
let mut cmd = Cli::command();
let bin_name = cmd.get_name().to_string();
generate(shell_type, &mut cmd, bin_name, &mut io::stdout());
Ok(())
}