Re-do command line arguments to only run specified days

This commit is contained in:
Eryn Wells 2022-12-06 07:39:53 -08:00
parent 2251854f9c
commit cbfada47ff

View file

@ -1,4 +1,5 @@
use std::env; use std::env;
use std::path::Path;
mod day1; mod day1;
mod day2; mod day2;
@ -8,27 +9,26 @@ mod day5;
mod file; mod file;
fn main() { fn main() {
let days = [day1::main, day2::main, day3::main, day4::main, day5::main];
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
assert!(args.len() >= 3, "Missing command line arguments"); let datafile_path = Path::new(&args[1]);
if !datafile_path.is_dir() {
println!("----- Day 1 -----"); println!("{} is not a path to a directory!", datafile_path.display());
let day1_datafile = &args[1]; return;
day1::main(&day1_datafile).expect("Unable to process day1 data file"); }
println!("----- Day 2 -----"); args.iter().skip(2).for_each(|arg| {
let day2_datafile = &args[2]; if let Ok(module_number) = usize::from_str_radix(arg, 10) {
day2::main(&day2_datafile).expect("Unable to process day2 data file"); println!("----- Day {} -----", module_number);
if let Some(datafile) = datafile_path
println!("----- Day 3 -----"); .join(format!("day{}-input.txt", module_number))
let day3_datafile = &args[3]; .as_path()
day3::main(&day3_datafile).expect("Unable to process day3 data file"); .to_str()
{
println!("----- Day 4 -----"); days[module_number - 1](datafile).expect("Unable to process day1 data file");
let day4_datafile = &args[4]; }
day4::main(day4_datafile.as_str()).expect("Unable to process day4 data file"); }
});
println!("----- Day 5 -----");
let day5_datafile = &args[5];
day5::main(day5_datafile.as_str()).expect("Unable to process day5 data file");
} }