From 87a9f402d86dc38aa47fd0299f882b681d12a3d0 Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Sun, 2 Mar 2025 23:55:52 -0600 Subject: support verified flat-format libraries --- ozone/src/launcher.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/ozone/src/launcher.rs b/ozone/src/launcher.rs index 336ff31..98e8143 100644 --- a/ozone/src/launcher.rs +++ b/ozone/src/launcher.rs @@ -597,15 +597,20 @@ impl LibraryRepository { } fn create_download(&self, lib: &Library, classifier: Option<&str>) -> Option> { - let remote_checksum = |base| { + let flat_library = |base| { let path = LibraryRepository::get_artifact_path(lib.name.as_str(), classifier)?; let url: String = [base, path.to_string_lossy().as_ref()].into_iter().collect(); - let check_url: String = [url.as_str(), ".sha1"].into_iter().collect(); - Some(Box::new(RemoteChecksumDownload::new(url, check_url, self.home.join(path))) as Box) + + if let Some(digest) = lib.sha1 { + Some(Box::new(VerifiedDownload::new(url, self.home.join(path), lib.size, Some(digest))) as Box) + } else { + let check_url: String = [url.as_str(), ".sha1"].into_iter().collect(); + Some(Box::new(RemoteChecksumDownload::new(url, check_url, self.home.join(path))) as Box) + } }; if let Some(ref url) = lib.url { - remote_checksum(url) + flat_library(url) } else if let Some(ref downloads) = lib.downloads { let dlinfo = downloads.get_download_info(classifier)?; // drinking game: take a shot once per heap allocation @@ -613,7 +618,7 @@ impl LibraryRepository { Some(Box::new(VerifiedDownload::new(dlinfo.url.as_ref()?, path.as_path(), dlinfo.size, dlinfo.sha1))) } else { - remote_checksum("https://libraries.minecraft.net/") + flat_library("https://libraries.minecraft.net/") } } -- cgit v1.2.3-70-g09d2