summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2018-12-20 09:43:58 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2018-12-20 09:44:57 -0500
commit7b07f106e29b1b3e8046eb0a309469009a2fbab1 (patch)
tree678f35ac2f65165a4fc769e6ff77da2796bc7594 /src/main.rs
parenta8d6d8c7fdbe50d56593acffd0fd20e58a5bf53d (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.rs49
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);