aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src-tauri/src/lib.rs81
-rw-r--r--src-tauri/src/main.rs80
2 files changed, 82 insertions, 79 deletions
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
new file mode 100644
index 00000000..0bb07e90
--- /dev/null
+++ b/src-tauri/src/lib.rs
@@ -0,0 +1,81 @@
+use anyhow::anyhow;
+
+/// Check version number of a mod
+pub fn check_mod_version_number(path_to_mod_folder: String) -> Result<String, anyhow::Error> {
+ // println!("{}", format!("{}/mod.json", path_to_mod_folder));
+ let data = std::fs::read_to_string(format!("{}/mod.json", path_to_mod_folder))?;
+ let parsed_json: serde_json::Value = serde_json::from_str(&data)?;
+ // println!("{}", parsed_json);
+ let mod_version_number = match parsed_json.get("Version").and_then(|value| value.as_str()) {
+ Some(version_number) => version_number,
+ None => return Err(anyhow!("No version number found")),
+ };
+
+ println!("{}", mod_version_number);
+
+ Ok(mod_version_number.to_string())
+}
+
+/// Attempts to find the game install location
+pub fn find_game_install_location() -> Result<String, anyhow::Error> {
+ // Attempt parsing Steam library directly
+ match steamlocate::SteamDir::locate() {
+ Some(mut steamdir) => {
+ let titanfall2_steamid = 1237970;
+ match steamdir.app(&titanfall2_steamid) {
+ Some(app) => {
+ // println!("{:#?}", app);
+ return Ok(app.path.to_str().unwrap().to_string());
+ }
+ None => println!("Couldn't locate Titanfall2"),
+ }
+ }
+ None => println!("Couldn't locate Steam on this computer!"),
+ }
+ Err(anyhow!(
+ "Could not auto-detect game install location! Please enter it manually."
+ ))
+}
+
+/// Returns the current Northstar version number as a string
+pub fn get_northstar_version_number() -> Result<String, anyhow::Error> {
+ let install_location = match find_game_install_location() {
+ Ok(path) => path,
+ Err(err) => return Err(err),
+ };
+
+ println!("{}", install_location);
+
+ // TODO:
+ // Check if NorthstarLauncher.exe exists and check its version number
+ let profile_folder = "R2Northstar";
+ let core_mods = [
+ "Northstar.Client",
+ "Northstar.Custom",
+ "Northstar.CustomServers",
+ ];
+ let initial_version_number = match check_mod_version_number(format!(
+ "{}/{}/mods/{}",
+ install_location, profile_folder, core_mods[0]
+ )) {
+ Ok(version_number) => version_number,
+ Err(err) => return Err(err),
+ };
+
+ for core_mod in core_mods {
+ let current_version_number = match check_mod_version_number(format!(
+ "{}/{}/mods/{}",
+ install_location, profile_folder, core_mod
+ )) {
+ Ok(version_number) => version_number,
+ Err(err) => return Err(err),
+ };
+ if current_version_number != initial_version_number {
+ // We have a version number mismatch
+ return Err(anyhow!("Found version number mismatch"));
+ }
+ }
+ println!("All mods same version");
+
+ Ok(initial_version_number)
+}
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index c42a61dc..b90eb8a2 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -8,9 +8,9 @@ use std::{
time::Duration,
};
+use app::{find_game_install_location, get_northstar_version_number};
use tauri::{Manager, State};
use tokio::time::sleep;
-use anyhow::anyhow;
#[derive(Default)]
struct Counter(Arc<Mutex<i32>>);
@@ -64,26 +64,6 @@ fn find_game_install_location_caller() -> String {
}
}
-/// Attempts to find the game install location
-fn find_game_install_location() -> Result<String, anyhow::Error> {
- // Attempt parsing Steam library directly
- match steamlocate::SteamDir::locate() {
- Some(mut steamdir) => {
- let titanfall2_steamid = 1237970;
- match steamdir.app(&titanfall2_steamid) {
- Some(app) => {
- // println!("{:#?}", app);
- return Ok(app.path.to_str().unwrap().to_string());
- }
- None => println!("Couldn't locate Titanfall2"),
- }
- }
- None => println!("Couldn't locate Steam on this computer!"),
- }
- Err(anyhow!(
- "Could not auto-detect game install location! Please enter it manually."
- ))
-}
#[tauri::command]
fn hello_world() -> String {
@@ -122,61 +102,3 @@ fn get_northstar_version_number_caller() -> String {
}
}
-/// Check version number of a mod
-fn check_mod_version_number(path_to_mod_folder: String) -> Result<String, anyhow::Error> {
- // println!("{}", format!("{}/mod.json", path_to_mod_folder));
- let data = std::fs::read_to_string(format!("{}/mod.json", path_to_mod_folder))?;
- let parsed_json: serde_json::Value = serde_json::from_str(&data)?;
- // println!("{}", parsed_json);
- let mod_version_number = match parsed_json.get("Version").and_then(|value| value.as_str()) {
- Some(version_number) => version_number,
- None => return Err(anyhow!("No version number found")),
- };
-
- println!("{}", mod_version_number);
-
- Ok(mod_version_number.to_string())
-}
-
-/// Returns the current Northstar version number as a string
-fn get_northstar_version_number() -> Result<String, anyhow::Error> {
- let install_location = match find_game_install_location() {
- Ok(path) => path,
- Err(err) => return Err(err),
- };
-
- println!("{}", install_location);
-
- // TODO:
- // Check if NorthstarLauncher.exe exists and check its version number
- let profile_folder = "R2Northstar";
- let core_mods = [
- "Northstar.Client",
- "Northstar.Custom",
- "Northstar.CustomServers",
- ];
- let initial_version_number = match check_mod_version_number(format!(
- "{}/{}/mods/{}",
- install_location, profile_folder, core_mods[0]
- )) {
- Ok(version_number) => version_number,
- Err(err) => return Err(err),
- };
-
- for core_mod in core_mods {
- let current_version_number = match check_mod_version_number(format!(
- "{}/{}/mods/{}",
- install_location, profile_folder, core_mod
- )) {
- Ok(version_number) => version_number,
- Err(err) => return Err(err),
- };
- if current_version_number != initial_version_number {
- // We have a version number mismatch
- return Err(anyhow!("Found version number mismatch"));
- }
- }
- println!("All mods same version");
-
- Ok(initial_version_number)
-}