mod distribution;
pub mod jre_downloader;
pub mod runtime;
pub mod errors;
use serde::{Deserialize, Serialize};
pub use errors::{
JreError, JreResult,
JavaRuntimeError, JavaRuntimeResult,
DistributionError, DistributionResult,
};
#[derive(Deserialize, Serialize, Clone)]
#[serde(tag = "type", content = "value")]
pub enum DistributionSelection {
#[serde(rename = "automatic")]
Automatic(String),
#[serde(rename = "custom")]
Custom(String),
#[serde(rename = "manual")]
Manual(JavaDistribution),
}
impl Default for DistributionSelection {
fn default() -> Self {
DistributionSelection::Automatic(String::new())
}
}
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
pub enum JavaDistribution {
#[serde(rename = "temurin")]
Temurin,
#[serde(rename = "graalvm")]
GraalVM,
#[serde(rename = "zulu")]
Zulu,
#[serde(rename = "liberica")]
Liberica,
}
impl Default for JavaDistribution {
fn default() -> Self {
JavaDistribution::Temurin
}
}
impl JavaDistribution {
pub fn get_name(&self) -> &str {
match self {
JavaDistribution::Temurin => "temurin",
JavaDistribution::GraalVM => "graalvm",
JavaDistribution::Zulu => "zulu",
JavaDistribution::Liberica => "liberica",
}
}
pub fn supports_version(&self, version: u8) -> bool {
match self {
JavaDistribution::Temurin => true, JavaDistribution::GraalVM => version >= 17, JavaDistribution::Zulu => true, JavaDistribution::Liberica => true, }
}
pub async fn get_download_url(&self, jre_version: &u8) -> DistributionResult<String> {
distribution::get_download_url(self, jre_version).await
}
}