use std::io;
use clap::CommandFactory;
use crate::cli::{Cli, CompletionArgs};
use crate::error::Result;
pub fn run(args: &CompletionArgs) -> Result<()> {
let mut cmd = Cli::command();
let bin_name = cmd.get_name().to_string();
clap_complete::generate(args.shell, &mut cmd, bin_name, &mut io::stdout());
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use clap_complete::Shell;
#[test]
fn generates_for_each_shell() {
for shell in [
Shell::Bash,
Shell::Zsh,
Shell::Fish,
Shell::PowerShell,
Shell::Elvish,
] {
run(&CompletionArgs { shell }).expect("completion generation should succeed");
}
}
}