From 88b2505e716256a623f7c5a2b83f16266befd773 Mon Sep 17 00:00:00 2001 From: quexeky Date: Mon, 30 Dec 2024 13:12:04 +1100 Subject: [PATCH] feat(Compat): Implemented spawning with umu (using umu-wrapper-lib) Signed-off-by: quexeky --- src-tauri/Cargo.lock | 7 +++++++ src-tauri/Cargo.toml | 1 + src-tauri/src/process/process_manager.rs | 9 ++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index c5e4cda..2d65c42 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -995,6 +995,7 @@ dependencies = [ "tauri-plugin-shell", "tauri-plugin-single-instance", "tokio", + "umu-wrapper-lib", "url", "urlencoding", "uuid", @@ -4926,6 +4927,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "umu-wrapper-lib" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa36636bef667cee9eb4f497c24279182b8b9f098fd04b0b8c5d2ebc4e451f1" + [[package]] name = "unic-char-property" version = "0.9.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 31b2c7a..1b84321 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -43,6 +43,7 @@ md5 = "0.7.0" chrono = "0.4.38" tauri-plugin-os = "2" boxcar = "0.2.7" +umu-wrapper-lib = "0.1.0" [dependencies.tauri] version = "2.1.1" diff --git a/src-tauri/src/process/process_manager.rs b/src-tauri/src/process/process_manager.rs index 76a4d90..e7c3fd9 100644 --- a/src-tauri/src/process/process_manager.rs +++ b/src-tauri/src/process/process_manager.rs @@ -10,6 +10,7 @@ use std::{ use log::{info, warn}; use serde::{Deserialize, Serialize}; use tauri::{AppHandle, Manager}; +use umu_wrapper_lib::command_builder::UmuCommandBuilder; use crate::{ db::{GameStatus, GameTransientStatus, DATA_ROOT_DIR}, @@ -315,6 +316,7 @@ impl ProcessHandler for NativeGameLauncher { } } +const UMU_LAUNCHER_EXECUTABLE: &str = "umu-run"; struct UMULauncher; impl ProcessHandler for UMULauncher { fn launch_process( @@ -327,6 +329,11 @@ impl ProcessHandler for UMULauncher { log_file: File, error_file: File, ) -> Result { - todo!() + UmuCommandBuilder::new(UMU_LAUNCHER_EXECUTABLE, command) + .game_id(game_id.into()) + .launch_args(args) + .build() + .spawn() + .map_err(|x| x.to_string()) } }