arg update fixes

This commit is contained in:
SpikeHD
2023-04-25 23:50:26 -07:00
parent c735b8936a
commit 2568694ac1
3 changed files with 39 additions and 31 deletions

View File

@@ -2,29 +2,30 @@ use serde::{Deserialize, Serialize};
use std::path::PathBuf; use std::path::PathBuf;
use std::string::String; use std::string::String;
// Config may not exist, or may be old, so it's okay if these are optional
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
pub struct Configuration { pub struct Configuration {
pub toggle_grasscutter: bool, pub toggle_grasscutter: Option<bool>,
pub game_install_path: String, pub game_install_path: Option<String>,
pub grasscutter_with_game: bool, pub grasscutter_with_game: Option<bool>,
pub grasscutter_path: String, pub grasscutter_path: Option<String>,
pub java_path: String, pub java_path: Option<String>,
pub close_action: u64, pub close_action: Option<u64>,
pub startup_launch: bool, pub startup_launch: Option<bool>,
pub last_ip: String, pub last_ip: Option<String>,
pub last_port: String, pub last_port: Option<String>,
pub language: String, pub language: Option<String>,
pub customBackground: String, pub customBackground: Option<String>,
pub cert_generated: bool, pub cert_generated: Option<bool>,
pub theme: String, pub theme: Option<String>,
pub https_enabled: bool, pub https_enabled: Option<bool>,
pub debug_enabled: bool, pub debug_enabled: Option<bool>,
pub patch_rsa: bool, pub patch_rsa: Option<bool>,
pub use_internal_proxy: bool, pub use_internal_proxy: Option<bool>,
pub wipe_login: bool, pub wipe_login: Option<bool>,
pub horny_mode: bool, pub horny_mode: Option<bool>,
pub auto_mongodb: bool, pub auto_mongodb: Option<bool>,
pub un_elevated: bool, pub un_elevated: Option<bool>,
} }
pub fn config_path() -> PathBuf { pub fn config_path() -> PathBuf {
@@ -37,7 +38,7 @@ pub fn config_path() -> PathBuf {
pub fn get_config() -> Configuration { pub fn get_config() -> Configuration {
let path = config_path(); let path = config_path();
let config = std::fs::read_to_string(path).unwrap(); let config = std::fs::read_to_string(path).unwrap_or("{}".to_string());
let config: Configuration = serde_json::from_str(&config).unwrap(); let config: Configuration = serde_json::from_str(&config).unwrap();
config config

View File

@@ -105,15 +105,17 @@ async fn parse_args(inp: &Vec<String>) -> Result<Args, ArgsError> {
patch::patch_game().await; patch::patch_game().await;
} }
if args.value_of("non-elevated-game")? { if game_path.is_some() {
system_helpers::run_un_elevated(game_path.to_string(), Some(game_args)) if args.value_of("non-elevated-game")? {
} else { system_helpers::run_un_elevated(game_path.unwrap().to_string(), Some(game_args))
system_helpers::run_program(game_path.to_string(), Some(game_args)) } else {
system_helpers::run_program(game_path.unwrap().to_string(), Some(game_args))
}
} }
} }
if args.value_of("server")? { if args.value_of("server")? && config.grasscutter_path.is_some() && config.java_path.is_some() {
let server_jar = config.grasscutter_path; let server_jar = config.grasscutter_path.unwrap();
let mut server_path = server_jar.clone(); let mut server_path = server_jar.clone();
// Strip jar name from path // Strip jar name from path
if server_path.contains('/') { if server_path.contains('/') {
@@ -124,7 +126,7 @@ async fn parse_args(inp: &Vec<String>) -> Result<Args, ArgsError> {
let len = server_jar.rfind('\\').unwrap(); let len = server_jar.rfind('\\').unwrap();
server_path.truncate(len); server_path.truncate(len);
} }
let java_path = config.java_path; let java_path = config.java_path.unwrap();
system_helpers::run_jar(server_jar, server_path.to_string(), java_path); system_helpers::run_jar(server_jar, server_path.to_string(), java_path);
} }
@@ -155,7 +157,7 @@ fn main() -> Result<(), ArgsError> {
println!("You running as a non-elevated user. Some stuff will almost definitely not work."); println!("You running as a non-elevated user. Some stuff will almost definitely not work.");
println!("==============================================================================="); println!("===============================================================================");
reopen_as_admin(); //reopen_as_admin();
} }
// Setup datadir/cultivation just in case something went funky and it wasn't made // Setup datadir/cultivation just in case something went funky and it wasn't made

View File

@@ -52,7 +52,12 @@ pub async fn unpatch_game() -> bool {
pub async fn get_game_rsa_path() -> Option<String> { pub async fn get_game_rsa_path() -> Option<String> {
let config = config::get_config(); let config = config::get_config();
let mut game_folder = PathBuf::from(config.game_install_path);
if config.game_install_path.is_none() {
return None;
}
let mut game_folder = PathBuf::from(config.game_install_path.unwrap());
game_folder.pop(); game_folder.pop();
Some(format!("{}/", game_folder.to_str().unwrap()).replace('\\', "/")) Some(format!("{}/", game_folder.to_str().unwrap()).replace('\\', "/"))