From 1a28c831b07d4b4a444bb293c0c403765ebc344a Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sun, 12 Mar 2023 00:53:42 -0400 Subject: [PATCH] lint: hopefully the final cleanup of the rust code --- src-tauri/src/commands.rs | 2 +- src-tauri/src/commands/config.rs | 14 +++- src-tauri/src/commands/game.rs | 80 +++++++++++-------- src/components/games/setup/GameSetup.svelte | 2 +- .../games/setup/Requirements.svelte | 1 - 5 files changed, 61 insertions(+), 38 deletions(-) diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 98ba3440..a271107c 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -23,7 +23,7 @@ pub enum CommandError { #[error("{0}")] VersionManagement(String), #[error("{0}")] - InvalidPath(String), + GameManagement(String), #[error("{0}")] BinaryExecution(String), #[error("{0}")] diff --git a/src-tauri/src/commands/config.rs b/src-tauri/src/commands/config.rs index 141c4294..d53ef8fe 100644 --- a/src-tauri/src/commands/config.rs +++ b/src-tauri/src/commands/config.rs @@ -1,5 +1,3 @@ -use std::path::Path; - use crate::{config::LauncherConfig, util::file::delete_dir}; use tauri::Manager; @@ -124,7 +122,17 @@ pub async fn is_game_installed( let version_folder = config_lock.game_install_version_folder(&game_name); if version.is_empty() || version_folder.is_empty() { - config_lock.update_installed_game_version(&game_name, false); + config_lock + .update_installed_game_version(&game_name, false) + .map_err(|err| { + log::error!( + "Unable to mark partially installed game as uninstalled {}", + err + ); + CommandError::Configuration(format!( + "Unable to mark partially installed game as uninstalled" + )) + })?; return Ok(false); } diff --git a/src-tauri/src/commands/game.rs b/src-tauri/src/commands/game.rs index d211f6f0..88c7dca5 100644 --- a/src-tauri/src/commands/game.rs +++ b/src-tauri/src/commands/game.rs @@ -13,42 +13,58 @@ pub async fn uninstall_game( game_name: String, ) -> Result<(), CommandError> { let mut config_lock = config.lock().await; - match &config_lock.installation_dir { - None => Err(CommandError::InvalidPath(format!( - "Can't uninstalled the game, no installation directory found" - ))), - Some(path) => { - // TODO - cleanup - let data_folder = Path::new(path).join("active").join(&game_name).join("data"); - std::fs::remove_dir_all(data_folder.join("decompiler_out")); - std::fs::remove_dir_all(data_folder.join("iso_data")); - std::fs::remove_dir_all(data_folder.join("out")); - config_lock.update_installed_game_version(&game_name, false); - app_handle.emit_all("gameUninstalled", {}).unwrap(); - Ok(()) + + let install_path = match &config_lock.installation_dir { + None => { + return Err(CommandError::GameManagement(format!( + "No installation directory set, can't perform uninstallation" + ))) } - } + Some(path) => Path::new(path), + }; + + let data_folder = Path::new(install_path) + .join("active") + .join(&game_name) + .join("data"); + + std::fs::remove_dir_all(data_folder.join("decompiler_out"))?; + std::fs::remove_dir_all(data_folder.join("iso_data"))?; + std::fs::remove_dir_all(data_folder.join("out"))?; + + config_lock + .update_installed_game_version(&game_name, false) + .map_err(|_| { + CommandError::GameManagement(format!("Unable to persist game installation status")) + })?; + app_handle.emit_all("gameUninstalled", {})?; + Ok(()) } #[tauri::command] -pub async fn reset_game_settings(game_name: String) -> Result<(), ()> { - let config_dir = config_dir(); - match &config_dir { - None => Ok(()), - Some(path) => { - let path_to_settings = path - .join("OpenGOAL") - .join(game_name) - .join("settings") - .join("pc-settings.gc"); - if path_to_settings.exists() { - let mut backup_file = path_to_settings.clone(); - backup_file.set_file_name("pc-settings.old.gc"); - std::fs::rename(path_to_settings, backup_file); - Ok(()) - } else { - Ok(()) - } +pub async fn reset_game_settings(game_name: String) -> Result<(), CommandError> { + let config_dir = match config_dir() { + None => { + return Err(CommandError::GameManagement(format!( + "Could not determine game config directory" + ))) } + Some(path) => path, + }; + + let path_to_settings = config_dir + .join("OpenGOAL") + .join(game_name) + .join("settings") + .join("pc-settings.gc"); + if path_to_settings.exists() { + let mut backup_file = path_to_settings.clone(); + backup_file.set_file_name("pc-settings.old.gc"); + std::fs::rename(path_to_settings, backup_file)?; + Ok(()) + } else { + return Err(CommandError::GameManagement(format!( + "Game config directory does not exist, cannot reset settings" + ))); } } diff --git a/src/components/games/setup/GameSetup.svelte b/src/components/games/setup/GameSetup.svelte index 605caa10..998c1e42 100644 --- a/src/components/games/setup/GameSetup.svelte +++ b/src/components/games/setup/GameSetup.svelte @@ -38,7 +38,7 @@ // Check requirements const isAvxMet = await isAVXRequirementMet(); let isOpenGLMet = await isOpenGLRequirementMet(); - if (isOpenGLMet === null) { + if (isOpenGLMet === null || isOpenGLMet === undefined) { isOpenGLMet = await isOpenGLVersionSupported("4.3"); await setOpenGLRequirementMet(isOpenGLMet); } diff --git a/src/components/games/setup/Requirements.svelte b/src/components/games/setup/Requirements.svelte index 39a63387..df2a4b7b 100644 --- a/src/components/games/setup/Requirements.svelte +++ b/src/components/games/setup/Requirements.svelte @@ -9,7 +9,6 @@ onMount(async () => { isAVXMet = await isAVXRequirementMet(); isOpenGLMet = await isOpenGLRequirementMet(); - console.log(isOpenGLMet); }); function alertColor(val: boolean | undefined) {