OneLauncher-Cracked/packages/core/src/api/metadata.rs
Pauline c820a57fc5
🐛 fix: error handling
Signed-off-by: Pauline <git@ethanlibs.co>
2024-08-17 18:58:05 +02:00

97 lines
2.2 KiB
Rust

//! Metadata management interface
use crate::State;
pub use interpulse::api::minecraft::VersionManifest;
pub use interpulse::api::modded::Manifest;
// TODO: better error handling (prisma?)
/// Get a [`VersionManifest`] for all available Minecraft versions.
#[tracing::instrument]
pub async fn get_minecraft_versions() -> crate::Result<VersionManifest> {
let state = State::get().await?;
let meta = state
.metadata
.read()
.await
.minecraft
.clone()
.ok_or(anyhow::anyhow!("couldn't get minecraft metadata"))?;
Ok(meta)
}
/// Get a [`Manifest`] for all available Fabric versions.
#[tracing::instrument]
pub async fn get_fabric_versions() -> crate::Result<Manifest> {
let state = State::get().await?;
let meta = state
.metadata
.read()
.await
.fabric
.clone()
.ok_or(anyhow::anyhow!("couldn't get fabric metadata"))?;
Ok(meta)
}
/// Get a [`Manifest`] for all available Quilt versions.
#[tracing::instrument]
pub async fn get_quilt_versions() -> crate::Result<Manifest> {
let state = State::get().await?;
let meta = state
.metadata
.read()
.await
.quilt
.clone()
.ok_or(anyhow::anyhow!("couldn't get quilt metadata"))?;
Ok(meta)
}
/// Get a [`Manifest`] for all available Forge versions.
#[tracing::instrument]
pub async fn get_forge_versions() -> crate::Result<Manifest> {
let state = State::get().await?;
let meta = state
.metadata
.read()
.await
.forge
.clone()
.ok_or(anyhow::anyhow!("couldn't get forge metadata"))?;
Ok(meta)
}
/// Get a [`Manifest`] for all available NeoForge versions.
#[tracing::instrument]
pub async fn get_neoforge_versions() -> crate::Result<Manifest> {
let state = State::get().await?;
let meta = state
.metadata
.read()
.await
.neoforge
.clone()
.ok_or(anyhow::anyhow!("couldn't get neoforge metadata"))?;
Ok(meta)
}
// /// Get a [`Manifest`] for all available Legacy Fabric versions.
// #[tracing::instrument]
// pub async fn get_legacy_fabric_versions() -> crate::Result<Manifest> {
// let state = State::get().await?;
// let meta = state
// .metadata
// .read()
// .await
// .legacy_fabric
// .clone()
// .ok_or(anyhow!("missing legacyfabric metadata"))?;
// Ok(meta)
// }