diff options
-rw-r--r-- | config/mimetype.toml | 8 | ||||
-rw-r--r-- | src/commands/delete_files.rs | 2 | ||||
-rw-r--r-- | src/commands/flat.rs | 2 | ||||
-rw-r--r-- | src/commands/search_fzf.rs | 2 | ||||
-rw-r--r-- | src/config/keymap/keymapping.rs | 11 | ||||
-rw-r--r-- | src/config/mimetype/registry.rs | 2 | ||||
-rw-r--r-- | src/config/mod.rs | 32 | ||||
-rw-r--r-- | src/util/mimetype.rs | 4 |
8 files changed, 36 insertions, 27 deletions
diff --git a/config/mimetype.toml b/config/mimetype.toml index dc7179a..65751db 100644 --- a/config/mimetype.toml +++ b/config/mimetype.toml @@ -184,10 +184,14 @@ torrent.app_list = [ [mimetype] +# application/octet-stream +[mimetype.application.subtype.octet-stream] +inherit = "video_default" + # text/* [mimetype.text] inherit = "text_default" -# application/octet-stream -[mimetype.application.subtype.octet-stream] +# text/* +[mimetype.video] inherit = "video_default" diff --git a/src/commands/delete_files.rs b/src/commands/delete_files.rs index b9eb660..66ec898 100644 --- a/src/commands/delete_files.rs +++ b/src/commands/delete_files.rs @@ -20,7 +20,7 @@ fn delete_files( .curr_tab_ref() .curr_list_ref() .map(|s| s.get_selected_paths()) - .unwrap_or_else(Vec::new); + .unwrap_or_default(); let paths_len = paths.len(); if paths_len == 0 { return Err(std::io::Error::new( diff --git a/src/commands/flat.rs b/src/commands/flat.rs index 94f0959..fc698d3 100644 --- a/src/commands/flat.rs +++ b/src/commands/flat.rs @@ -59,7 +59,7 @@ pub fn flatten(context: &mut AppContext, depth: usize) -> JoshutoResult { .curr_tab_ref() .curr_list_ref() .map(|lst| lst.get_index()) - .unwrap_or(None); + .unwrap_or_default(); let viewport_index: usize = context .tab_context_ref() .curr_tab_ref() diff --git a/src/commands/search_fzf.rs b/src/commands/search_fzf.rs index 7bc0ca8..39a399a 100644 --- a/src/commands/search_fzf.rs +++ b/src/commands/search_fzf.rs @@ -20,7 +20,7 @@ pub fn search_fzf(context: &mut AppContext, backend: &mut AppBackend) -> Joshuto .collect(); v }) - .unwrap_or_else(Vec::new); + .unwrap_or_default(); if items.is_empty() { return Err(JoshutoError::new( diff --git a/src/config/keymap/keymapping.rs b/src/config/keymap/keymapping.rs index dedbb39..b864230 100644 --- a/src/config/keymap/keymapping.rs +++ b/src/config/keymap/keymapping.rs @@ -110,10 +110,13 @@ impl From<AppKeyMappingRaw> for AppKeyMapping { impl TomlConfigFile for AppKeyMapping { fn get_config(file_name: &str) -> Self { - parse_to_config_file::<AppKeyMappingRaw, AppKeyMapping>(file_name).unwrap_or_else(|| { - eprintln!("Using default keymapping"); - Self::default() - }) + match parse_to_config_file::<AppKeyMappingRaw, AppKeyMapping>(file_name) { + Ok(s) => s, + Err(e) => { + eprintln!("Failed to parse keymap: {}", e); + Self::default() + } + } } } diff --git a/src/config/mimetype/registry.rs b/src/config/mimetype/registry.rs index 452bb93..29d194b 100644 --- a/src/config/mimetype/registry.rs +++ b/src/config/mimetype/registry.rs @@ -67,7 +67,7 @@ impl From<AppProgramRegistryRaw> for AppProgramRegistry { let subtypes = data .subtype - .unwrap_or_else(|| HashMap::new()) + .unwrap_or_default() .into_iter() .map(|(k, v)| (k, v.app_list)) .collect(); diff --git a/src/config/mod.rs b/src/config/mod.rs index c1c71b7..db46f4d 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -13,8 +13,11 @@ pub use self::theme::*; use serde::de::DeserializeOwned; use std::fs; +use std::io; use std::path::{Path, PathBuf}; +use crate::error::JoshutoError; +use crate::error::JoshutoResult; use crate::CONFIG_HIERARCHY; pub trait TomlConfigFile { @@ -36,25 +39,24 @@ where } // parses a config file into its appropriate format -fn parse_to_config_file<T, S>(filename: &str) -> Option<S> +fn parse_to_config_file<T, S>(filename: &str) -> JoshutoResult<S> where T: DeserializeOwned, S: From<T>, { - let file_path = search_directories(filename, &CONFIG_HIERARCHY)?; - let file_contents = match fs::read_to_string(&file_path) { - Ok(content) => content, - Err(e) => { - eprintln!("Error reading {} file: {}", filename, e); - return None; + match search_directories(filename, &CONFIG_HIERARCHY) { + Some(file_path) => { + let file_contents = fs::read_to_string(&file_path)?; + let config = toml::from_str::<T>(&file_contents)?; + Ok(S::from(config)) } - }; - let config = match toml::from_str::<T>(&file_contents) { - Ok(config) => config, - Err(e) => { - eprintln!("Error parsing {} file: {}", filename, e); - return None; + None => { + let error_kind = io::ErrorKind::NotFound; + let error = JoshutoError::new( + crate::error::JoshutoErrorKind::Io(error_kind), + "No config directory found".to_string(), + ); + Err(error) } - }; - Some(S::from(config)) + } } diff --git a/src/util/mimetype.rs b/src/util/mimetype.rs index 423cb2f..e4859b6 100644 --- a/src/util/mimetype.rs +++ b/src/util/mimetype.rs @@ -21,7 +21,7 @@ impl Mimetype { } pub fn get_subtype(&self) -> &str { - &&self._subtype + &self._subtype } } @@ -51,7 +51,7 @@ pub fn get_mimetype(p: &Path) -> JoshutoResult<Mimetype> { JoshutoErrorKind::Io(io::ErrorKind::InvalidInput), "Unknown mimetype".to_string(), ); - return Err(error); + Err(error) } } } |