#[macro_use] extern crate clap; mod day_1; mod day_2; mod day_3; fn main() { use clap::App; let yml = load_yaml!("cli.yml"); let matches = App::from_yaml(yml).get_matches(); let day = opt_str_to_int(matches.value_of("day")); let puzzle = opt_str_to_int(matches.value_of("puzzle")); match day { 1 => match puzzle { 1 => day_1::puzzle_1::solve(), 2 => day_1::puzzle_2::solve(), _ => println!("unavailable puzzle given!"), }, 2 => match puzzle { 1 => day_2::puzzle_1::solve(), 2 => day_2::puzzle_2::solve(), _ => println!("unavailable puzzle given!"), }, 3 => match puzzle { 1 => day_3::puzzle_1::solve(), 2 => day_3::puzzle_2::solve(), _ => println!("unavailable puzzle given!"), }, _ => println!("unavailable day given!"), } } fn opt_str_to_int(val: Option<&str>) -> i32 { match val { Some(val) => val.parse::().unwrap(), None => panic!("value not supplied! type --help"), } }