From 276f208984a6adff4eb1bfdd6cda90db34c38a82 Mon Sep 17 00:00:00 2001 From: Samuel Walker Date: Sat, 22 Jun 2024 23:07:51 -0600 Subject: [PATCH] working on more launch stuff --- FCLauncher/src-tauri/src/main.rs | 2 +- FCLauncher/src-tauri/src/modpack.rs | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/FCLauncher/src-tauri/src/main.rs b/FCLauncher/src-tauri/src/main.rs index cbd6e0d..8b5d86a 100644 --- a/FCLauncher/src-tauri/src/main.rs +++ b/FCLauncher/src-tauri/src/main.rs @@ -31,7 +31,7 @@ fn greet(name: &str) -> String { fn main() { prism::install_prism(); tauri::Builder::default() - .invoke_handler(tauri::generate_handler![greet, modpack::get_modpacks]) + .invoke_handler(tauri::generate_handler![greet, modpack::get_modpacks, modpack::launch_modpack]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/FCLauncher/src-tauri/src/modpack.rs b/FCLauncher/src-tauri/src/modpack.rs index 74aa897..fa16de2 100644 --- a/FCLauncher/src-tauri/src/modpack.rs +++ b/FCLauncher/src-tauri/src/modpack.rs @@ -1,8 +1,9 @@ use crate::ftp; -use crate::system_dirs::get_local_data_directory; +use crate::system_dirs::{get_local_data_directory, get_prism_executable}; use std::env; use std::fs::File; +use std::process::Command; use std::{io::Cursor, path::PathBuf}; use std::io::{Read, Seek}; use serde_json::Value; @@ -58,7 +59,9 @@ fn check_modpack_needs_update(id: String) -> bool{ return false; } +#[tauri::command] pub fn launch_modpack(id: String){ + if check_modpack_needs_update(id.clone()) { install_modpack(id.clone()); } @@ -66,7 +69,12 @@ pub fn launch_modpack(id: String){ } fn install_modpack(id: String){ - let mut file = File::create(env::temp_dir().join(format!("{}.mrpack", get_modpack_name(id)))).unwrap(); + let versions = get_versions(id.clone()); + let path = env::temp_dir().join(format!("{}.mrpack", get_modpack_name(id.clone()))); + let mut file = File::create(path.clone()).unwrap(); + ftp::ftp_retr(PathBuf::new().join(id).join(versions[versions.len()-1].version.clone()), file, |_| return); + let child = Command::new(get_local_data_directory().join("prism").join(get_prism_executable())).arg("-I").arg(path).spawn().unwrap(); + } #[tauri::command]