use crate::cli::Cli;
use clap::CommandFactory;
use miette::Result;
pub(crate) fn generate() -> Result<()> {
let mut cli = Cli::command().version(env!("CARGO_PKG_VERSION"));
let mut spec = clap_usage::spec(&mut cli, "usage");
crate::command_effects::apply(&mut spec);
println!("// @generated by usage-cli from clap metadata");
println!(r#"min_usage_version "4.0""#);
println!("{spec}");
println!("{}", include_str!("../assets/usage-extra.usage.kdl").trim());
Ok(())
}
pub(crate) fn complete(shell: &str) -> Result<()> {
match shell {
"bash" => print!("{}", include_str!("../assets/completions/usage.bash")),
"fish" => print!("{}", include_str!("../assets/completions/usage.fish")),
"zsh" => print!("{}", include_str!("../assets/completions/_usage")),
_ => {
miette::bail!("unsupported shell: {}", shell);
}
};
Ok(())
}