From e88c17a44c94f788e945c5728bc18beca7e0f8a6 Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Wed, 22 Jan 2025 02:08:31 -0600 Subject: get started on downloading JREs also refactor ensure file logic --- src/launcher/jre/arch.rs | 45 ++++++++++++++++++++++++++++++++++++++++ src/launcher/jre/manifest.rs | 49 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 src/launcher/jre/arch.rs create mode 100644 src/launcher/jre/manifest.rs (limited to 'src/launcher/jre') 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>>; + +#[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 +} -- cgit v1.2.3-70-g09d2