mod cli;
mod data;
mod utils;
use std::path::PathBuf;
use clap::Parser;
use cli::CLIHandler;
#[derive(Parser, Default, Debug)]
#[clap(author = "Nissar Chababy (@funilrys)", version, about)]
pub struct Arguments {
#[clap(short, long, parse(from_os_str), required = true)]
source: PathBuf,
#[clap(short, long, parse(from_os_str), required = false)]
output: Option<PathBuf>,
#[clap(short, long, min_values = 1, required = true)]
whitelist: Vec<String>,
#[clap(long, min_values = 1, required = false)]
all: Vec<String>,
#[clap(long, min_values = 1, required = false)]
reg: Vec<String>,
#[clap(long, min_values = 1, required = false)]
rzd: Vec<String>,
#[clap(long)]
allow_complements: bool,
#[clap(short, long)]
multithread: bool,
#[clap(short = 't', long, required = false)]
max_threads: Option<usize>,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Arguments::parse();
let mut handler = CLIHandler::new(args);
if handler.multithread {
handler.multithreaded_cleanup();
} else {
handler.cleanup();
}
Ok(())
}