use std::io;
use clap::{Command, CommandFactory, Parser};
use clap_complete::generate;
use rllvm::cli::{
BinName, ClangWrapperArgs, CompletionArgs, ExtractionArgs, InfoArgs, InitArgs, RustcWrapperArgs,
};
fn command_for(bin: BinName) -> Command {
match bin {
BinName::Cc => ClangWrapperArgs::command().name("rllvm-cc"),
BinName::Cxx => ClangWrapperArgs::command()
.name("rllvm-cxx")
.about("Execute the wrapped clang++ compiler"),
BinName::GetBc => ExtractionArgs::command(),
BinName::Init => InitArgs::command(),
BinName::Info => InfoArgs::command(),
BinName::Rustc => RustcWrapperArgs::command(),
BinName::Completions => CompletionArgs::command(),
}
}
fn main() {
let args = CompletionArgs::parse();
let mut cmd = command_for(args.bin);
let bin_name = cmd.get_name().to_string();
generate(args.shell, &mut cmd, &bin_name, &mut io::stdout());
}