Skip to content

Commit 993e834

Browse files
committed
fix: Update CachyOS config generation to account for mirror changes
1 parent db70182 commit 993e834

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

src/linux/arch.rs

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ impl Distro for BlendOS {
247247
}
248248
}
249249

250-
const CACHYOS_KDE_MIRROR: &str = "https://mirror.cachyos.org/ISO/kde/";
250+
const CACHYOS_MIRROR: &str = "https://mirror.cachyos.org/ISO/";
251251

252252
pub struct CachyOS;
253253
impl Distro for CachyOS {
@@ -256,38 +256,49 @@ impl Distro for CachyOS {
256256
const HOMEPAGE: Option<&'static str> = Some("https://cachyos.org/");
257257
const DESCRIPTION: Option<&'static str> = Some("Designed to deliver lightning-fast speeds and stability, ensuring a smooth and enjoyable computing experience every time you use it.");
258258
async fn generate_configs() -> Option<Vec<Config>> {
259-
let page = capture_page(CACHYOS_KDE_MIRROR).await?;
259+
let edition_data = capture_page(CACHYOS_MIRROR).await?;
260+
let edition_regex = Regex::new(r#"href="(\w+)\/"#).unwrap();
260261
let release_regex = Regex::new(r#"href="([0-9]+)/""#).unwrap();
261-
let iso_regex = Arc::new(Regex::new(r#"href="(cachyos-([^-]+)-linux-[0-9]+.iso)""#).unwrap());
262+
let iso_regex = Regex::new(r#"href="(cachyos-([^-]+)-linux-[0-9]+.iso)""#).unwrap();
262263

263-
let futures = release_regex.captures_iter(&page).map(|c| {
264-
let release = c[1].to_string();
265-
let mirror = format!("{CACHYOS_KDE_MIRROR}{release}/");
264+
let edition_mirrors = edition_regex
265+
.captures_iter(&edition_data)
266+
.map(|c| format!("{CACHYOS_MIRROR}{}/", &c[1]));
267+
268+
let futures = edition_mirrors.map(|edition_mirror| {
266269
let iso_regex = iso_regex.clone();
270+
let release_regex = release_regex.clone();
267271
async move {
268-
let page = capture_page(&mirror).await?;
269-
let futures = iso_regex
270-
.captures_iter(&page)
271-
.map(|c| {
272-
let edition = c[2].to_string();
273-
let url = format!("{mirror}{}", &c[1]);
274-
let checksum_url = url.clone() + ".sha256";
275-
let release = release.clone();
276-
async move {
277-
let checksum = capture_page(&checksum_url)
278-
.await
279-
.and_then(|c| c.split_whitespace().next().map(ToString::to_string));
280-
Config {
281-
release,
282-
edition: Some(edition),
283-
iso: Some(vec![Source::Web(WebSource::new(url, checksum, None, None))]),
284-
..Default::default()
272+
let edition_page = capture_page(&edition_mirror).await?;
273+
let futures = release_regex.captures_iter(&edition_page).map(|c| {
274+
let release = c[1].to_string();
275+
let mirror = format!("{edition_mirror}{release}/");
276+
let iso_regex = iso_regex.clone();
277+
278+
async move {
279+
let page = capture_page(&mirror).await?;
280+
let futures = iso_regex.captures_iter(&page).map(|c| {
281+
let edition = c[2].to_string();
282+
let url = format!("{mirror}{}", &c[1]);
283+
let checksum_url = url.clone() + ".sha256";
284+
let release = release.clone();
285+
async move {
286+
let checksum = capture_page(&checksum_url)
287+
.await
288+
.and_then(|c| c.split_whitespace().next().map(ToString::to_string));
289+
Config {
290+
release,
291+
edition: Some(edition),
292+
iso: Some(vec![Source::Web(WebSource::new(url, checksum, None, None))]),
293+
..Default::default()
294+
}
285295
}
286-
}
287-
})
288-
.collect::<Vec<_>>();
296+
});
289297

290-
Some(join_futures!(futures))
298+
Some(join_futures!(futures))
299+
}
300+
});
301+
Some(join_futures!(futures, 2))
291302
}
292303
});
293304

0 commit comments

Comments
 (0)