use clap::Parser;
use colored::Colorize;
use std::path::PathBuf;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct Cli {
#[command(flatten)]
verbosity: clap_verbosity_flag::Verbosity<clap_verbosity_flag::InfoLevel>,
#[arg(short = 'f', long)]
force: bool,
#[arg(short = 'n', long, env = "MODE_DRY_RUN", value_parser = clap::builder::FalseyValueParser::new())]
dry_run: bool,
#[arg(required = true)]
srcs: Vec<PathBuf>,
dest: PathBuf,
}
fn main() {
let cli = Cli::parse();
let mp = mvx::init_logging(cli.verbosity.log_level_filter());
let ctrlc = mvx::ctrlc_flag().unwrap();
log::trace!("{cli:?}");
let ctx = mvx::Ctx {
moc: mvx::MoveOrCopy::Move,
force: cli.force,
dry_run: cli.dry_run,
batch_size: cli.srcs.len(),
mp: &mp,
ctrlc: &ctrlc,
};
if let Err(e) = mvx::run_batch(&cli.srcs, &cli.dest, &ctx) {
eprintln!("{} {:?}", mvx::FAIL_MARK.red().bold(), e);
std::process::exit(1);
}
}