Fix quilt + fabric intermediary syncing issues (#13)

* Fix quilt + fabric intermediary syncing issues

* fix comp

* Fix random versions not working/updating meta
This commit is contained in:
Geometrically
2023-10-21 13:09:21 -07:00
committed by GitHub
parent 57b1932b5e
commit b1ca2cc2b6
7 changed files with 559 additions and 147 deletions

View File

@@ -31,8 +31,25 @@ pub async fn retrieve_data(
{
let mut loaders = loaders_mutex.write().await;
for loader in &list.loader {
loaders.push((Box::new(loader.stable), loader.version.clone()))
for (index, loader) in list.loader.iter().enumerate() {
if versions.iter().any(|x| {
x.id == DUMMY_REPLACE_STRING
&& x.loaders.iter().any(|x| x.id == loader.version)
}) {
if index == 0 {
loaders.push((
Box::new(loader.stable),
loader.version.clone(),
Box::new(true),
))
}
} else {
loaders.push((
Box::new(loader.stable),
loader.version.clone(),
Box::new(false),
))
}
}
list.loader
@@ -46,16 +63,7 @@ pub async fn retrieve_data(
let loader_versions = futures::future::try_join_all(
loaders_mutex.read().await.clone().into_iter().map(
|(stable, loader)| async {
{
if versions.iter().any(|x| {
x.id == DUMMY_REPLACE_STRING
&& x.loaders.iter().any(|x| x.id == loader)
}) {
return Ok(None);
}
}
|(stable, loader, skip_upload)| async {
let version = fetch_fabric_version(
DUMMY_GAME_VERSION,
&loader,
@@ -63,8 +71,8 @@ pub async fn retrieve_data(
)
.await?;
Ok::<Option<(Box<bool>, String, PartialVersionInfo)>, Error>(
Some((stable, loader, version)),
Ok::<(Box<bool>, String, PartialVersionInfo, Box<bool>), Error>(
(stable, loader, version, skip_upload),
)
},
),
@@ -73,8 +81,8 @@ pub async fn retrieve_data(
let visited_artifacts_mutex = Arc::new(Mutex::new(Vec::new()));
futures::future::try_join_all(loader_versions.into_iter()
.flatten().map(
|(stable, loader, version)| async {
.map(
|(stable, loader, version, skip_upload)| async {
let libs = futures::future::try_join_all(
version.libraries.into_iter().map(|mut lib| async {
{
@@ -167,6 +175,13 @@ pub async fn retrieve_data(
)
.await?;
if async move {
*skip_upload
}.await {
return Ok::<(), Error>(())
}
let version_path = format!(
"fabric/v{}/versions/{}.json",
daedalus::modded::CURRENT_FABRIC_FORMAT_VERSION,

View File

@@ -147,26 +147,35 @@ fn check_env_vars() -> bool {
}
lazy_static::lazy_static! {
static ref CLIENT : Bucket = Bucket::new(
&dotenvy::var("S3_BUCKET_NAME").unwrap(),
if &*dotenvy::var("S3_REGION").unwrap() == "r2" {
Region::R2 {
account_id: dotenvy::var("S3_URL").unwrap(),
}
static ref CLIENT : Bucket = {
let region = dotenvy::var("S3_REGION").unwrap();
let b = Bucket::new(
&dotenvy::var("S3_BUCKET_NAME").unwrap(),
if &*region == "r2" {
Region::R2 {
account_id: dotenvy::var("S3_URL").unwrap(),
}
} else {
Region::Custom {
region: region.clone(),
endpoint: dotenvy::var("S3_URL").unwrap(),
}
},
Credentials::new(
Some(&*dotenvy::var("S3_ACCESS_TOKEN").unwrap()),
Some(&*dotenvy::var("S3_SECRET").unwrap()),
None,
None,
None,
).unwrap(),
).unwrap();
if region == "path-style" {
b.with_path_style()
} else {
Region::Custom {
region: dotenvy::var("S3_REGION").unwrap(),
endpoint: dotenvy::var("S3_URL").unwrap(),
}
},
Credentials::new(
Some(&*dotenvy::var("S3_ACCESS_TOKEN").unwrap()),
Some(&*dotenvy::var("S3_SECRET").unwrap()),
None,
None,
None,
).unwrap(),
).unwrap();
b
}
};
}
pub async fn upload_file_to_bucket(

View File

@@ -25,7 +25,8 @@ pub async fn retrieve_data(
let mut manifest =
daedalus::minecraft::fetch_version_manifest(None).await?;
let cloned_manifest = Arc::new(Mutex::new(old_manifest.clone().unwrap_or(manifest.clone())));
let cloned_manifest =
Arc::new(Mutex::new(old_manifest.clone().unwrap_or(manifest.clone())));
let patches = fetch_library_patches()?;
let cloned_patches = Arc::new(&patches);

View File

@@ -447,7 +447,7 @@ pub async fn fetch_maven_metadata(
let parts: Vec<&str> = value.split('-').collect();
if parts.len() == 2 {
map.entry(parts[0].to_string())
.or_insert(Vec::new())
.or_default()
.push((original, parts[1].to_string()));
}
}

View File

@@ -31,8 +31,25 @@ pub async fn retrieve_data(
{
let mut loaders = loaders_mutex.write().await;
for loader in &list.loader {
loaders.push((Box::new(false), loader.version.clone()))
for (index, loader) in list.loader.iter().enumerate() {
if versions.iter().any(|x| {
x.id == DUMMY_REPLACE_STRING
&& x.loaders.iter().any(|x| x.id == loader.version)
}) {
if index == 0 {
loaders.push((
Box::new(false),
loader.version.clone(),
Box::new(true),
))
}
} else {
loaders.push((
Box::new(false),
loader.version.clone(),
Box::new(false),
))
}
}
list.loader
@@ -46,16 +63,7 @@ pub async fn retrieve_data(
let loader_versions = futures::future::try_join_all(
loaders_mutex.read().await.clone().into_iter().map(
|(stable, loader)| async {
{
if versions.iter().any(|x| {
x.id == DUMMY_REPLACE_STRING
&& x.loaders.iter().any(|x| x.id == loader)
}) {
return Ok(None);
}
}
|(stable, loader, skip_upload)| async {
let version = fetch_quilt_version(
DUMMY_GAME_VERSION,
&loader,
@@ -63,8 +71,8 @@ pub async fn retrieve_data(
)
.await?;
Ok::<Option<(Box<bool>, String, PartialVersionInfo)>, Error>(
Some((stable, loader, version)),
Ok::<(Box<bool>, String, PartialVersionInfo, Box<bool>), Error>(
(stable, loader, version, skip_upload),
)
},
),
@@ -73,8 +81,8 @@ pub async fn retrieve_data(
let visited_artifacts_mutex = Arc::new(Mutex::new(Vec::new()));
futures::future::try_join_all(loader_versions.into_iter()
.flatten().map(
|(stable, loader, version)| async {
.map(
|(stable, loader, version, skip_upload)| async {
let libs = futures::future::try_join_all(
version.libraries.into_iter().map(|mut lib| async {
{
@@ -167,6 +175,12 @@ pub async fn retrieve_data(
)
.await?;
if async move {
*skip_upload
}.await {
return Ok::<(), Error>(())
}
let version_path = format!(
"quilt/v{}/versions/{}.json",
daedalus::modded::CURRENT_QUILT_FORMAT_VERSION,