use crate::cli::build_cli;
use anyhow::Result;
use std::io;
use clap_generate::{
generate,
generators::{Bash, Elvish, Fish, PowerShell, Zsh},
};
pub fn completions(shell: Option<&str>) -> Result<()> {
match shell {
Some("bash") => generate::<Bash, _>(&mut build_cli(), "flavours", &mut io::stdout()),
Some("elvish") => generate::<Elvish, _>(&mut build_cli(), "flavours", &mut io::stdout()),
Some("powershell") => {
generate::<PowerShell, _>(&mut build_cli(), "flavours", &mut io::stdout())
},
Some("fish") => {
let mut buffer = Vec::new();
generate::<Fish, _>(&mut build_cli(), "flavours", &mut buffer);
let buffer = String::from_utf8(buffer)?;
let buffer = buffer.replace("all installed schemes).' -r -f", "all installed schemes).' -r -f -a \"(flavours list -l)\"");
let buffer = buffer.replace("defaults to \\'generated\\'' -r -f", "defaults to \\'generated\\'' -r -f -a \"(flavours list -l)\"");
println!("{}", buffer);
}
Some("zsh") => {
let mut buffer = Vec::new();
generate::<Zsh, _>(&mut build_cli(), "flavours", &mut buffer);
let buffer = String::from_utf8(buffer)?;
let buffer = buffer.replace("all installed schemes).:( )", "all installed schemes).:($(flavours list))");
let buffer = buffer.replace("defaults to '\\''generated'\\'']: :( )", "defaults to '\\''generated'\\'']: :($(flavours list))");
println!("{}", buffer);
}
_ => {}
};
Ok(())
}