From 1156b3503a04780bbdcb6a781cce87281b8bf87d Mon Sep 17 00:00:00 2001 From: Alejandro Visiedo Date: Mon, 7 Apr 2025 17:58:57 +0200 Subject: [PATCH] fix: ensure dirs exist Ensure ~/.config/wldash and ~/.cache/wldash exist. Provide hints when no configuration exists. Signed-off-by: Alejandro Visiedo --- src/main.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 4562212..54b7e00 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,8 @@ use widgets::{Geometry, Widget}; use std::{ env, fs::File, + fs, + path::Path, io::{BufRead, BufReader, Write}, os::unix::net::{UnixListener, UnixStream}, rc::Rc, @@ -53,11 +55,27 @@ OPTIONS: ); } +fn ensure_dir_exists(path: &str) { + match fs::create_dir_all(path) { + Ok(_) => (), + Err(err) => panic!("error creating directory: {}", err), + } +} + +fn create_required_directories() { + let dir_config_wldash = format!("{}/wldash", xdg::config_folder()); + let dir_cache_wldash = format!("{}/wldash", xdg::cache_folder()); + ensure_dir_exists(&dir_config_wldash); + ensure_dir_exists(&dir_cache_wldash); +} + fn main() { let mut args = env::args(); // Skip program name _ = args.next(); + create_required_directories(); + let mut config_file = format!("{}/wldash/config.yml", xdg::config_folder()); loop { @@ -175,7 +193,7 @@ fn main() { let config: Config = match File::open(config_file) { Ok(f) => serde_yaml::from_reader(f).unwrap(), - Err(_) => panic!("configuration file missing"), + Err(_) => panic!("configuration file missing: try 'wldash --write-default-config'"), }; if let Some(true) = config.server {