From a3ef08d64982a73d858c2de4007cfe2bd4b95df8 Mon Sep 17 00:00:00 2001
From: Blinningjr <nicke.l@telia.com>
Date: Mon, 11 Jan 2021 14:50:31 +0100
Subject: [PATCH] Implemented better filepath error message

---
 srp_analysis/src/file_handler.rs | 11 +++++++----
 srp_analysis/src/main.rs         |  8 +++++++-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/srp_analysis/src/file_handler.rs b/srp_analysis/src/file_handler.rs
index cff1460..81d6b46 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 a92198d..3b25fcc 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(),
     };
     
-- 
GitLab