main.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #[macro_use]
  2. extern crate clap;
  3. mod day_1;
  4. mod day_2;
  5. mod day_3;
  6. fn main() {
  7. use clap::App;
  8. let yml = load_yaml!("cli.yml");
  9. let matches = App::from_yaml(yml).get_matches();
  10. let day = opt_str_to_int(matches.value_of("day"));
  11. let puzzle = opt_str_to_int(matches.value_of("puzzle"));
  12. match day {
  13. 1 => match puzzle {
  14. 1 => day_1::puzzle_1::solve(),
  15. 2 => day_1::puzzle_2::solve(),
  16. _ => println!("unavailable puzzle given!"),
  17. },
  18. 2 => match puzzle {
  19. 1 => day_2::puzzle_1::solve(),
  20. 2 => day_2::puzzle_2::solve(),
  21. _ => println!("unavailable puzzle given!"),
  22. },
  23. 3 => match puzzle {
  24. 1 => day_3::puzzle_1::solve(),
  25. 2 => day_3::puzzle_2::solve(),
  26. _ => println!("unavailable puzzle given!"),
  27. },
  28. _ => println!("unavailable day given!"),
  29. }
  30. }
  31. fn opt_str_to_int(val: Option<&str>) -> i32 {
  32. match val {
  33. Some(val) => val.parse::<i32>().unwrap(),
  34. None => panic!("value not supplied! type --help"),
  35. }
  36. }