summaryrefslogtreecommitdiffstats
path: root/src/launcher/jre
diff options
context:
space:
mode:
Diffstat (limited to 'src/launcher/jre')
-rw-r--r--src/launcher/jre/arch.rs45
-rw-r--r--src/launcher/jre/manifest.rs49
2 files changed, 94 insertions, 0 deletions
diff --git a/src/launcher/jre/arch.rs b/src/launcher/jre/arch.rs
new file mode 100644
index 0000000..e984171
--- /dev/null
+++ b/src/launcher/jre/arch.rs
@@ -0,0 +1,45 @@
+use cfg_if::cfg_if;
+
+macro_rules! define_arch {
+ ($arch:expr) => {
+ pub const JRE_ARCH: &str = $arch;
+ }
+}
+
+cfg_if! {
+ if #[cfg(target_os = "windows")] {
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ define_arch!("windows-x64");
+ } else if #[cfg(target_arch = "x86")] {
+ define_arch!("windows-x86");
+ } else if #[cfg(target_arch = "aarch64")] {
+ define_arch!("windows-arm64");
+ } else {
+ define_arch!("gamecore");
+ }
+ }
+ } else if #[cfg(target_os = "linux")] {
+ cfg_if! {
+ if #[cfg(target_arch = "x86_64")] {
+ define_arch!("linux");
+ } else if #[cfg(target_arch = "x86")] {
+ define_arch!("linux-i386");
+ } else {
+ define_arch!("gamecore");
+ }
+ }
+ } else if #[cfg(target_os = "macos")] {
+ cfg_if! {
+ if #[cfg(target_arch = "aarch64")] {
+ define_arch!("mac-os-arm64");
+ } else if #[cfg(target_arch = "x86_64")] {
+ define_arch!("mac-os");
+ } else {
+ define_arch!("gamecore");
+ }
+ }
+ } else {
+ define_arch!("gamecore");
+ }
+}
diff --git a/src/launcher/jre/manifest.rs b/src/launcher/jre/manifest.rs
new file mode 100644
index 0000000..9b84377
--- /dev/null
+++ b/src/launcher/jre/manifest.rs
@@ -0,0 +1,49 @@
+use std::collections::HashMap;
+use serde::Deserialize;
+use crate::version::DownloadInfo;
+
+#[derive(Debug, Deserialize)]
+pub struct Availability {
+ pub group: u32, // unknown meaning
+ pub progress: u32 // unknown meaning
+}
+
+#[derive(Debug, Deserialize)]
+pub struct Version {
+ pub name: String,
+ pub version: String
+}
+
+#[derive(Debug, Deserialize)]
+pub struct JavaRuntimeInfo {
+ // I don't see how half of this information is useful with how the JRE system currently functions -figboot
+ pub availability: Availability,
+ pub manifest: DownloadInfo,
+ pub version: Version
+}
+
+pub type JavaRuntimesManifest = HashMap<String, HashMap<String, Vec<JavaRuntimeInfo>>>;
+
+#[derive(Debug, Deserialize, Clone, Copy, Eq, PartialEq)]
+#[serde(rename_all = "lowercase")]
+pub enum FileType {
+ File,
+ Directory,
+ Link
+}
+
+#[derive(Debug, Deserialize)]
+pub struct JavaRuntimeFile {
+ #[serde(rename = "type")]
+ pub file_type: FileType,
+ #[serde(default)]
+ pub executable: bool,
+
+ pub lzma: DownloadInfo,
+ pub raw: DownloadInfo
+}
+
+#[derive(Debug, Deserialize)]
+pub struct JavaRuntimeManifest {
+ pub files: HashMap<String, JavaRuntimeFile>
+}