diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2018-12-20 09:43:58 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2018-12-20 09:44:57 -0500 |
commit | 7b07f106e29b1b3e8046eb0a309469009a2fbab1 (patch) | |
tree | 678f35ac2f65165a4fc769e6ff77da2796bc7594 /src/main.rs | |
parent | a8d6d8c7fdbe50d56593acffd0fd20e58a5bf53d (diff) |
add support back for reading config files
- clean up code for reading config files
- add support for sorting files by mtime
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs index 3e5b6eb..9c94cb6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,26 +1,63 @@ -// #[macro_use] -// extern crate serde_derive; - -extern crate ncurses; +#[macro_use] +extern crate serde_derive; extern crate toml; +extern crate ncurses; extern crate xdg; // use std::collections::BTreeMap; use std::env; +use std::fs; mod joshuto; const PROGRAM_NAME : &str = "joshuto"; const CONFIG_FILE : &str = "joshuto.toml"; +fn read_config() -> Option<joshuto::config::JoshutoRawConfig> +{ + let dirs = xdg::BaseDirectories::with_profile(PROGRAM_NAME, "").unwrap(); + + let config_path = dirs.find_config_file(CONFIG_FILE)?; + println!("config_path: {:?}", config_path); + match fs::read_to_string(&config_path) { + Ok(config_contents) => { + match toml::from_str(&config_contents) { + Ok(config) => { + println!("rawconfig:\n{:?}", config); + Some(config) + }, + Err(e) => { + eprintln!("{}", e); + None + }, + } + }, + Err(e) => { + eprintln!("{}", e); + None + }, + } +} + +fn get_config() -> joshuto::config::JoshutoConfig +{ + match read_config() { + Some(config) => { + config.into_config() + } + None => { + joshuto::config::JoshutoConfig::new() + } + } +} + fn main() { let args: Vec<String> = env::args().collect(); println!("args: {:?}", args); - let config = joshuto::config::JoshutoRawConfig::new(); - let config = config.to_config(); + let config = get_config(); println!("config:\n{:#?}", config); |