use cursive::theme::{BaseColor, Color}; use directories::ProjectDirs; use std::fs; use std::path::PathBuf; pub struct AppConfig { pub true_chr: char, pub false_chr: char, pub future_chr: char, // view dimensions pub view_width: usize, pub view_height: usize, // app dimensions pub grid_width: usize, pub reached_color: Color, pub todo_color: Color, pub future_color: Color, } pub fn load_configuration_file() -> AppConfig { return AppConfig { true_chr: '·', false_chr: '·', future_chr: '·', view_width: 25, view_height: 8, grid_width: 3, reached_color: Color::Dark(BaseColor::Cyan), todo_color: Color::Dark(BaseColor::Magenta), future_color: Color::Light(BaseColor::Black), }; } fn project_dirs() -> ProjectDirs { ProjectDirs::from("rs", "nerdypepper", "dijo") .unwrap_or_else(|| panic!("Invalid home directory!")) } pub fn habit_file() -> PathBuf { let proj_dirs = project_dirs(); let mut data_file = PathBuf::from(proj_dirs.data_dir()); fs::create_dir_all(&data_file); data_file.push("habit_record.json"); return data_file; } pub fn auto_habit_file() -> PathBuf { let proj_dirs = project_dirs(); let mut data_file = PathBuf::from(proj_dirs.data_dir()); fs::create_dir_all(&data_file); data_file.push("habit_record[auto].json"); return data_file; }