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<()> {