From 94bf54d85a7801122cc819d07166bb17f927e5c8 Mon Sep 17 00:00:00 2001 From: Drew Short Date: Mon, 25 May 2020 19:44:59 -0500 Subject: [PATCH] Check path before loading --- src/config.rs | 14 ++++++++++---- src/state.rs | 12 ++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/config.rs b/src/config.rs index a2f0af7..431ac91 100644 --- a/src/config.rs +++ b/src/config.rs @@ -20,10 +20,16 @@ pub struct ConfigManager { } fn read_config>(path: P) -> Result> { - let file = File::open(path)?; - let reader = BufReader::new(file); - let result: Config = from_reader(reader)?; - Ok(result) + if path.as_ref().exists() { + let file = File::open(path)?; + let reader = BufReader::new(file); + let result: Config = from_reader(reader)?; + Ok(result) + } else { + Ok(Config { + save_directory: Some(String::from("tmp")), + }) + } } impl ConfigManager { diff --git a/src/state.rs b/src/state.rs index 5e1623d..ef78b6b 100644 --- a/src/state.rs +++ b/src/state.rs @@ -21,10 +21,14 @@ pub struct StateManager { } fn read_state>(path: P) -> Result> { - let file = File::open(path)?; - let reader = BufReader::new(file); - let result: State = from_reader(reader)?; - Ok(result) + if path.as_ref().exists() { + let file = File::open(path)?; + let reader = BufReader::new(file); + let result: State = from_reader(reader)?; + Ok(result) + } else { + Ok(State { downloaded: vec![] }) + } } fn save_state>(path: P, state: &State) -> serde_json::Result<()> {