use super::args::SetupxArgs;
use super::confirm::confirm_setup;
use cargo_setupx::{apply_packs, Config};
use std::process;
pub fn run_setupx(args: SetupxArgs) -> anyhow::Result<()> {
if !args.quality && !args.hooks && args.arch.is_none() && !args.all {
eprintln!("❌ No packs selected. Use --quality, --hooks, --arch, or --all");
eprintln!();
eprintln!("Examples:");
eprintln!(" cargo setupx --quality --hooks");
eprintln!(" cargo setupx --arch=clean");
eprintln!(" cargo setupx --all");
eprintln!();
eprintln!("Run 'cargo setupx --help' for more information.");
process::exit(1);
}
let config = if args.all {
Config {
quality: true,
hooks: true,
arch: Some("clean".to_string()),
force: args.force,
yes: args.yes,
}
} else {
Config {
quality: args.quality,
hooks: args.hooks,
arch: args.arch,
force: args.force,
yes: args.yes,
}
};
if !config.yes && !confirm_setup(&config)? {
println!("❌ Setup cancelled.");
return Ok(());
}
apply_packs(&config, &args.path)?;
Ok(())
}