From 19a4aa66892c66e69bca7dcfcc05264bec735585 Mon Sep 17 00:00:00 2001 From: Geometrically <18202329+Geometrically@users.noreply.github.com> Date: Mon, 17 Apr 2023 14:05:27 -0700 Subject: [PATCH] Add metadata GV loader api (#84) * Add metadata GV loader api * Register commands * fix lint + docs issue --- theseus/src/api/metadata.rs | 27 +++++++++++++++++++++++ theseus/src/api/mod.rs | 3 ++- theseus_gui/src-tauri/src/api/metadata.rs | 21 ++++++++++++++++++ theseus_gui/src-tauri/src/api/mod.rs | 1 + theseus_gui/src-tauri/src/main.rs | 3 +++ theseus_gui/src/helpers/metadata.js | 19 ++++++++++++++++ 6 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 theseus/src/api/metadata.rs create mode 100644 theseus_gui/src-tauri/src/api/metadata.rs create mode 100644 theseus_gui/src/helpers/metadata.js diff --git a/theseus/src/api/metadata.rs b/theseus/src/api/metadata.rs new file mode 100644 index 000000000..06ef07ecb --- /dev/null +++ b/theseus/src/api/metadata.rs @@ -0,0 +1,27 @@ +use crate::State; +pub use daedalus::minecraft::VersionManifest; +pub use daedalus::modded::Manifest; + +#[tracing::instrument] +pub async fn get_minecraft_versions() -> crate::Result { + let state = State::get().await?; + let tags = state.metadata.minecraft.clone(); + + Ok(tags) +} + +#[tracing::instrument] +pub async fn get_fabric_versions() -> crate::Result { + let state = State::get().await?; + let tags = state.metadata.fabric.clone(); + + Ok(tags) +} + +#[tracing::instrument] +pub async fn get_forge_versions() -> crate::Result { + let state = State::get().await?; + let tags = state.metadata.forge.clone(); + + Ok(tags) +} diff --git a/theseus/src/api/mod.rs b/theseus/src/api/mod.rs index dfc29b933..3ee31ffe7 100644 --- a/theseus/src/api/mod.rs +++ b/theseus/src/api/mod.rs @@ -1,6 +1,7 @@ //! API for interacting with Theseus pub mod auth; pub mod jre; +pub mod metadata; pub mod pack; pub mod process; pub mod profile; @@ -19,7 +20,7 @@ pub mod prelude { pub use crate::{ auth::{self, Credentials}, data::*, - jre, pack, process, + jre, metadata, pack, process, profile::{self, Profile}, profile_create, settings, state::JavaGlobals, diff --git a/theseus_gui/src-tauri/src/api/metadata.rs b/theseus_gui/src-tauri/src/api/metadata.rs new file mode 100644 index 000000000..e7c01ad26 --- /dev/null +++ b/theseus_gui/src-tauri/src/api/metadata.rs @@ -0,0 +1,21 @@ +use crate::api::Result; +use daedalus::minecraft::VersionManifest; +use daedalus::modded::Manifest; + +/// Gets the game versions from daedalus +#[tauri::command] +pub async fn metadata_get_game_versions() -> Result { + Ok(theseus::metadata::get_minecraft_versions().await?) +} + +/// Gets the fabric versions from daedalus +#[tauri::command] +pub async fn metadata_get_fabric_versions() -> Result { + Ok(theseus::metadata::get_fabric_versions().await?) +} + +/// Gets the forge versions from daedalus +#[tauri::command] +pub async fn metadata_get_forge_versions() -> Result { + Ok(theseus::metadata::get_forge_versions().await?) +} diff --git a/theseus_gui/src-tauri/src/api/mod.rs b/theseus_gui/src-tauri/src/api/mod.rs index 800b494d5..3bed74971 100644 --- a/theseus_gui/src-tauri/src/api/mod.rs +++ b/theseus_gui/src-tauri/src/api/mod.rs @@ -5,6 +5,7 @@ use thiserror::Error; pub mod auth; pub mod jre; +pub mod metadata; pub mod pack; pub mod process; pub mod profile; diff --git a/theseus_gui/src-tauri/src/main.rs b/theseus_gui/src-tauri/src/main.rs index 81b1ec5e3..8fcbb100b 100644 --- a/theseus_gui/src-tauri/src/main.rs +++ b/theseus_gui/src-tauri/src/main.rs @@ -70,6 +70,9 @@ fn main() { api::process::process_get_stdout_by_uuid, api::process::process_kill_by_uuid, api::process::process_wait_for_by_uuid, + api::metadata::metadata_get_game_versions, + api::metadata::metadata_get_fabric_versions, + api::metadata::metadata_get_forge_versions, ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/theseus_gui/src/helpers/metadata.js b/theseus_gui/src/helpers/metadata.js new file mode 100644 index 000000000..de2482e1c --- /dev/null +++ b/theseus_gui/src/helpers/metadata.js @@ -0,0 +1,19 @@ +import { invoke } from '@tauri-apps/api/tauri' + +/// Gets the game versions from daedalus +// Returns a VersionManifest +export async function get_game_versions() { + return await invoke('metadata_get_game_versions') +} + +// Gets the fabric versions from daedalus +// Returns Manifest +export async function get_fabric_versions() { + return await invoke('metadata_get_fabric_versions') +} + +// Gets the forge versions from daedalus +// Returns Manifest +export async function get_forge_versions() { + return await invoke('metadata_get_forge_versions') +}