diff --git a/srp_analysis/src/file_handler.rs b/srp_analysis/src/file_handler.rs index cff1460c0a9aeca303227ab2cab36d6b75d2cfbe..81d6b46e8f8f38b09b285e3bf6212d227c6d8932 100644 --- a/srp_analysis/src/file_handler.rs +++ b/srp_analysis/src/file_handler.rs @@ -16,17 +16,20 @@ pub fn write_to_file(contents: String, file: PathBuf) -> std::io::Result<()> { /* * Load the tasks from a json file `file`. */ -pub fn load_tasks(file: PathBuf) -> Tasks { +pub fn load_tasks(file: PathBuf) -> Result<Tasks, String> { let mut serialized = String::new(); - read_from_file(&mut serialized, file); - return serde_json::from_str(&serialized).unwrap(); + match read_from_file(&mut serialized, &file) { + Ok(_) => (), + Err(_) => return Err(format!("Error: Invalid filepath {:?}", file)), + }; + return Ok(serde_json::from_str(&serialized).unwrap()); } /* * Read string from file `file` and store it in `contents`. */ -pub fn read_from_file(contents: &mut String, file: PathBuf) -> std::io::Result<()> { +pub fn read_from_file(contents: &mut String, file: &PathBuf) -> std::io::Result<()> { let mut file = File::open(file)?; file.read_to_string(contents)?; Ok(()) diff --git a/srp_analysis/src/main.rs b/srp_analysis/src/main.rs index a92198d5ed5ab88c70df3186586d2d55ed5bd534..3b25fcc04a449b37564fc1bafc5df7185e525997 100644 --- a/srp_analysis/src/main.rs +++ b/srp_analysis/src/main.rs @@ -38,7 +38,13 @@ fn main() { //println!("{:?}", opt); let tasks: Tasks = match opt.in_file { - Some(file) => load_tasks(file), + Some(file) => match load_tasks(file) { + Ok(ts) => ts, + Err(err) => { + println!("{}", err); + return; + }, + }, None => create_tasks(), };