use std::collections::BTreeMap; use api::OutputReleases; use color_eyre::{ eyre::{Context, Result}, }; use crate::api::AdoptiumAPI; /// API Abstraction pub mod api; #[async_std::main] async fn main() -> Result<()> { color_eyre::install()?; let mut output: BTreeMap> = BTreeMap::new(); // Create the api instances let adoptium = AdoptiumAPI::adoptium().context("Creating api")?; let semeru = AdoptiumAPI::semeru().context("Creating api")?; // Fill in x86_64 first { let x86_64 = output.entry("x86_64-linux".to_string()).or_default(); x86_64.insert( "temurin".to_string(), adoptium .get_all("x64") .await .context("Failed getting x86_64 adopt releases")?, ); x86_64.insert( "semeru".to_string(), semeru .get_all("x64") .await .context("Failed getting x86_64 adopt releases")?, ); } // Then aarch64 { let aarch64 = output.entry("aarch64-linux".to_string()).or_default(); aarch64.insert( "temurin".to_string(), adoptium .get_all("x64") .await .context("Failed getting aarch64 adopt releases")?, ); aarch64.insert( "semeru".to_string(), semeru .get_all("x64") .await .context("Failed getting aarch64 adopt releases")?, ); } let output = serde_json::to_string_pretty(&output).context("Failed to serialize output")?; println!("{output}"); Ok(()) }