use ecfuzz::config::Config;
use ecfuzz::corpus::Corpus;
use ecfuzz::execute::Exec;
use ecfuzz::mutator::Mutation;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut cfg: Config = Config::parse_args().expect("parsing config");
cfg.load_env();
std::env::set_current_dir(&cfg.output_dir)?;
let mut engine = Mutation::with_seed(cfg.dict_path.clone(), cfg.seed.clone(), cfg.multiplier);
let mut executor = Exec::new(cfg).expect("preparing execution context");
let mut corpus = Corpus::new();
for filepath in &executor.cfg.corpus_files {
corpus.append(&mut Corpus::load(filepath).expect("reading corpus file"))
}
for filepath in &executor.cfg.corpus_dirs {
corpus.append(&mut Corpus::load(filepath).expect("reading corpus dir"))
}
executor
._main_loop(&mut corpus, &mut engine)
.expect("executing main loop");
Ok(())
}