java/updater/src/main.rs

101 lines
3.1 KiB
Rust
Raw Normal View History

2022-11-29 02:21:44 -05:00
use std::collections::BTreeMap;
2021-12-17 00:17:40 -05:00
2022-11-29 02:21:44 -05:00
use api::OutputReleases;
use color_eyre::eyre::{Context, Result};
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
2021-12-17 00:17:40 -05:00
2022-11-29 02:21:44 -05:00
use crate::api::AdoptiumAPI;
2021-12-23 13:11:49 -05:00
2022-11-29 02:21:44 -05:00
/// API Abstraction
pub mod api;
2021-12-17 00:17:40 -05:00
2021-12-23 13:11:49 -05:00
#[async_std::main]
async fn main() -> Result<()> {
color_eyre::install()?;
tracing_subscriber::registry()
.with(fmt::layer().pretty().with_writer(std::io::stderr))
.with(EnvFilter::from_default_env())
.init();
2022-11-29 02:21:44 -05:00
let mut output: BTreeMap<String, BTreeMap<String, OutputReleases>> = BTreeMap::new();
// Create the api instances
let adoptium = AdoptiumAPI::adoptium().context("Creating api")?;
let semeru = AdoptiumAPI::semeru().context("Creating api")?;
2023-05-16 15:58:42 -04:00
// Fill in x86_64-linux first
2022-11-29 02:21:44 -05:00
{
let x86_64 = output.entry("x86_64-linux".to_string()).or_default();
x86_64.insert(
"temurin".to_string(),
adoptium
.get_all("x64", "linux")
2022-11-29 02:21:44 -05:00
.await
2023-05-16 16:31:52 -04:00
.context("Failed getting x86_64 temurin releases")?,
2022-11-29 02:21:44 -05:00
);
x86_64.insert(
"semeru".to_string(),
semeru
.get_all("x64", "linux")
2022-11-29 02:21:44 -05:00
.await
2023-05-16 16:31:52 -04:00
.context("Failed getting x86_64 semeru releases")?,
2022-11-29 02:21:44 -05:00
);
}
2023-05-16 15:58:42 -04:00
// Then aarch64-linux
2022-11-29 02:21:44 -05:00
{
let aarch64 = output.entry("aarch64-linux".to_string()).or_default();
aarch64.insert(
"temurin".to_string(),
adoptium
.get_all("aarch64", "linux")
2022-11-29 02:21:44 -05:00
.await
2023-05-16 16:31:52 -04:00
.context("Failed getting aarch64 temurin releases")?,
2022-11-29 02:21:44 -05:00
);
aarch64.insert(
"semeru".to_string(),
semeru
.get_all("aarch64", "linux")
2022-11-29 02:21:44 -05:00
.await
2023-05-16 16:31:52 -04:00
.context("Failed getting aarch64 semeru releases")?,
);
}
// Then x86_64-darwin
{
let x86_64 = output.entry("x86_64-darwin".to_string()).or_default();
x86_64.insert(
"temurin".to_string(),
adoptium
.get_all("x64", "mac")
.await
.context("Failed getting x86_64-darwin temurin releases")?,
);
x86_64.insert(
"semeru".to_string(),
semeru
.get_all("x64", "mac")
.await
.context("Failed getting x86_64-darwin semeru releases")?,
);
}
// Then aarch64-darwin
{
let aarch64 = output.entry("aarch64-darwin".to_string()).or_default();
aarch64.insert(
"temurin".to_string(),
adoptium
.get_all("aarch64", "mac")
.await
.context("Failed getting aarch64-darwin temurin releases")?,
);
aarch64.insert(
"semeru".to_string(),
semeru
.get_all("aarch64", "mac")
.await
.context("Failed getting aarch64-darwin semeru releases")?,
2022-11-29 02:21:44 -05:00
);
}
let output = serde_json::to_string_pretty(&output).context("Failed to serialize output")?;
println!("{output}");
2021-12-23 13:11:49 -05:00
Ok(())
2021-12-17 00:17:40 -05:00
}