--- /dev/null
+use std::env;
+use std::process;
+use std::error::Error;
+use std::fs::File;
+use std::io::Read;
+
+fn main() {
+ let args: Vec<String> = env::args().collect();
+ if args.len() != 3 {
+ let exe_name = args[0].split('/').last().unwrap();
+ println!("Missing argument");
+ println!("usage: {} <DAY> <INPUT_FILE>", exe_name);
+ process::exit(1);
+ }
+
+ if let Err(e) = run(&args[1], &args[2]) {
+ println!("Error: {e}");
+ process::exit(2);
+ }
+}
+
+fn run(day: &str, input_file: &str) -> Result<(), Box<dyn Error>> {
+ let mut f = File::open(input_file)?;
+ let mut input = String::new();
+ f.read_to_string(&mut input)?;
+
+ match day {
+ _ => return Err(format!("unknown or unimplemented day \"{day}\"").into()),
+ }
+ Ok(())
+}