From 9f6b5bb28fbf5d4e1533ded85d4afb9e9cc434bd Mon Sep 17 00:00:00 2001 From: Tobias Schneider Date: Sun, 28 Aug 2022 23:18:59 +0200 Subject: [PATCH] add error handling for config --- src/config.rs | 12 ++++++++---- src/main.rs | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/config.rs b/src/config.rs index 5e33c81..1173e26 100644 --- a/src/config.rs +++ b/src/config.rs @@ -22,8 +22,12 @@ pub struct Host { > } -pub fn read() -> Config { - let yaml = fs::read_to_string(Path::new("config.yaml")).unwrap(); - let config: Config = serde_yaml::from_str(&yaml).unwrap(); - return config; +pub fn read() -> Result { + let yaml = fs::read_to_string(Path::new("config.yaml")).unwrap_or("".to_string()); + let config: Config = match serde_yaml::from_str(&yaml) { + Ok(c) => c, + Err(_) => return Err(()) + }; + + Ok(config) } diff --git a/src/main.rs b/src/main.rs index d55666d..71606d7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -64,7 +64,10 @@ fn generate_authorized_keys(host_keys: Vec) -> String { fn main() { let mut hosts: Vec = vec![]; - let config = config::read(); + let config = match config::read() { + Ok(c) => c, + Err(_) => return println!("Error: `config.yaml` not found!") + }; for host in &config.hosts { for (user_name, user_data) in &host.users {