use anyhow::Result;
use clap::Parser;
use cargo_brief::cli::{BriefCommand, BriefDirect, Cargo, CargoCommand};
fn main() -> Result<()> {
let cmd = parse_command();
match &cmd {
BriefCommand::Api(args) => {
if let Some(spec) = &args.remote.clean {
cargo_brief::clean_cache(spec)?;
return Ok(());
}
let output = cargo_brief::run_api_pipeline(args)?;
print!("{output}");
}
BriefCommand::Search(args) => {
if let Some(spec) = &args.remote.clean {
cargo_brief::clean_cache(spec)?;
return Ok(());
}
let output = cargo_brief::run_search_pipeline(args)?;
print!("{output}");
}
BriefCommand::Examples(_) => {
eprintln!("error: 'examples' subcommand not yet implemented");
std::process::exit(1);
}
}
Ok(())
}
fn parse_command() -> BriefCommand {
let raw_args: Vec<String> = std::env::args().collect();
if raw_args.len() > 1 && raw_args[1] == "brief" {
let cargo = Cargo::parse();
let CargoCommand::Brief(direct) = cargo.command;
direct.command
} else {
let direct = BriefDirect::parse();
direct.command
}
}