From 2f70dd1e678e15a598c333bcc17b32ad346f1cfe Mon Sep 17 00:00:00 2001 From: Philip Kristoffersen Date: Sun, 8 Jan 2023 14:35:34 +0100 Subject: [PATCH] Remove expect (#321) * Remove expects * Disallow todo and panic --- src/main.rs | 3 ++ src/platforms/gog/gog_platform.rs | 4 +-- src/platforms/itch/itch_platform.rs | 2 +- src/steam/collections.rs | 44 +++++++++++++---------------- src/steam/utils.rs | 2 +- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/main.rs b/src/main.rs index dead40a..8f9bed8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,9 @@ #![deny(clippy::get_unwrap)] #![deny(clippy::unwrap_used)] #![deny(clippy::indexing_slicing)] +#![deny(clippy::expect_used)] +#![deny(clippy::panic)] +#![deny(clippy::todo)] mod config; mod migration; diff --git a/src/platforms/gog/gog_platform.rs b/src/platforms/gog/gog_platform.rs index 50194f3..c6797a6 100644 --- a/src/platforms/gog/gog_platform.rs +++ b/src/platforms/gog/gog_platform.rs @@ -214,12 +214,12 @@ pub fn default_location() -> PathBuf { #[cfg(target_os = "windows")] { let key = "PROGRAMDATA"; - let program_data = std::env::var(key).expect("Expected a APPDATA variable to be defined"); + let program_data = std::env::var(key).unwrap_or_default(); Path::new(&program_data).join("GOG.com").join("Galaxy") } #[cfg(target_family = "unix")] { - let home = std::env::var("HOME").expect("Expected a home variable to be defined"); + let home = std::env::var("HOME").unwrap_or_default(); Path::new(&home).join("Games/gog-galaxy/drive_c/ProgramData/GOG.com/Galaxy") } } diff --git a/src/platforms/itch/itch_platform.rs b/src/platforms/itch/itch_platform.rs index e8c284a..162d62b 100644 --- a/src/platforms/itch/itch_platform.rs +++ b/src/platforms/itch/itch_platform.rs @@ -78,7 +78,7 @@ fn dbpath_to_game(paths: &DbPaths) -> Option { #[cfg(target_family = "unix")] pub fn get_default_location() -> String { //If we don't have a home drive we have to just die - let home = std::env::var("HOME").expect("Expected a home variable to be defined"); + let home = std::env::var("HOME").unwrap_or_default(); format!("{}/.config/itch/", home) } diff --git a/src/steam/collections.rs b/src/steam/collections.rs index 2b701f8..4a53568 100644 --- a/src/steam/collections.rs +++ b/src/steam/collections.rs @@ -47,9 +47,7 @@ impl ActualSteamCollection { let key = format!("user-collections.{}", name_to_key(name)); let value = serialize_collection_value(name, ids); let start = SystemTime::now(); - let since_the_epoch = start - .duration_since(UNIX_EPOCH) - .expect("Time went backwards"); + let since_the_epoch = start.duration_since(UNIX_EPOCH).unwrap_or_default(); let timestamp = since_the_epoch.as_secs(); ActualSteamCollection { @@ -129,8 +127,10 @@ pub fn write_collections>( save_category(category_key, collections, &mut write_batch)?; if let Some(path) = get_vdf_path(steam_user_id) { - let content = std::fs::read_to_string(&path).expect("Should be able to read this file"); - if let Some(mut vdf_collections) = parse_vdf_collection(content) { + let content = std::fs::read_to_string(&path) + .ok() + .and_then(parse_vdf_collection); + if let Some(mut vdf_collections) = content { let boilr_keys: Vec = vdf_collections .keys() .filter(|k| k.contains(BOILR_TAG)) @@ -320,7 +320,7 @@ fn get_level_db_location() -> Option { fn serialize_collection_value>(name: S, game_ids: &[usize]) -> String { let value = ValueCollection::new(name, game_ids); - serde_json::to_string(&value).expect("Should be able to serialize known type") + serde_json::to_string(&value).unwrap_or_default() } fn name_to_key>(name: S) -> String { @@ -360,24 +360,20 @@ pub fn write_vdf_collection_to_string>( vdf: &HashMap, ) -> Option { let input = input.as_ref(); - let str = serde_json::to_string(vdf).expect("Should be able to serialize known type"); - let encoded_json = format!("\"{}\"", str.replace('\\', "\\\"")); - let key = "\t\"user-collections\"\t\t"; - if let Some(start_index) = input.find_substring(key) { - let start_index_plus_key = start_index + key.len(); - if let Some(line_index) = input.get(start_index_plus_key..).and_then(|i| i.find('\n')) { - let end_index_in_full = line_index + start_index_plus_key; - if let (Some(before), Some(after)) = ( - input.get(..start_index_plus_key), - input.get(end_index_in_full..), - ) { - let result = format!( - "{}{}{}", - before, - encoded_json, - after - ); - return Some(result); + if let Ok(str) = serde_json::to_string(vdf) { + let encoded_json = format!("\"{}\"", str.replace('\\', "\\\"")); + let key = "\t\"user-collections\"\t\t"; + if let Some(start_index) = input.find_substring(key) { + let start_index_plus_key = start_index + key.len(); + if let Some(line_index) = input.get(start_index_plus_key..).and_then(|i| i.find('\n')) { + let end_index_in_full = line_index + start_index_plus_key; + if let (Some(before), Some(after)) = ( + input.get(..start_index_plus_key), + input.get(end_index_in_full..), + ) { + let result = format!("{}{}{}", before, encoded_json, after); + return Some(result); + } } } } diff --git a/src/steam/utils.rs b/src/steam/utils.rs index 1ab2a92..c44da5a 100644 --- a/src/steam/utils.rs +++ b/src/steam/utils.rs @@ -86,7 +86,7 @@ pub fn get_shortcuts_paths(settings: &SteamSettings) -> eyre::Result