summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2018-12-22 22:33:31 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2018-12-22 22:33:31 -0500
commitbace975a6ba24e46eea04ebe86fbb97e15e0bc04 (patch)
treeb8b3c450edb12cf0ea7c42d47d7234a186eb7a97 /src/main.rs
parent118630f5d4451fcaa3fb85fcbed087765b2c2a9a (diff)
add preliminary support for keymapping configuration
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs48
1 files changed, 44 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 0b54d25..74670cf 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,8 +9,9 @@ use std::fs;
mod joshuto;
-const PROGRAM_NAME : &str = "joshuto";
-const CONFIG_FILE : &str = "joshuto.toml";
+const PROGRAM_NAME: &str = "joshuto";
+const CONFIG_FILE: &str = "joshuto.toml";
+const KEYMAP_FILE: &str = "keymap.toml";
fn read_config() -> Option<joshuto::config::JoshutoRawConfig>
{
@@ -50,15 +51,54 @@ fn get_config() -> joshuto::config::JoshutoConfig
}
}
+fn read_keymaps() -> Option<joshuto::keymap::JoshutoRawKeymaps>
+{
+ let dirs = xdg::BaseDirectories::with_profile(PROGRAM_NAME, "").unwrap();
+
+ let config_path = dirs.find_config_file(KEYMAP_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_keymap() -> joshuto::keymap::JoshutoKeymaps
+{
+ match read_keymaps() {
+ Some(config) => {
+ config.flatten()
+ }
+ None => {
+ joshuto::keymap::JoshutoKeymaps::new()
+ }
+ }
+}
+
fn main()
{
let args: Vec<String> = env::args().collect();
-
println!("args: {:?}", args);
let config = get_config();
-
println!("config:\n{:#?}", config);
+ let keymap = get_keymap();
+ println!("keymap:\n{:#?}", keymap);
+
joshuto::run(config);
}