diff options
| author | David Lönnhager <david.l@mullvad.net> | 2025-02-25 14:58:39 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2025-03-06 00:09:16 +0100 |
| commit | 60528adb9689803a4d2f170819c30b7ea4182b1f (patch) | |
| tree | 5904ad89159d064068e750cffefd11b77a646ead | |
| parent | 8aae07d50daf461e6288ae734589fc52032da54f (diff) | |
| download | mullvadvpn-60528adb9689803a4d2f170819c30b7ea4182b1f.tar.xz mullvadvpn-60528adb9689803a4d2f170819c30b7ea4182b1f.zip | |
Add URLs to generated metadata
| -rw-r--r-- | mullvad-update/meta/src/artifacts.rs | 19 | ||||
| -rw-r--r-- | mullvad-update/meta/src/main.rs | 4 | ||||
| -rw-r--r-- | mullvad-update/meta/src/platform.rs | 19 |
3 files changed, 35 insertions, 7 deletions
diff --git a/mullvad-update/meta/src/artifacts.rs b/mullvad-update/meta/src/artifacts.rs index 2c0a76b28e..4cda5db75c 100644 --- a/mullvad-update/meta/src/artifacts.rs +++ b/mullvad-update/meta/src/artifacts.rs @@ -11,6 +11,7 @@ use mullvad_update::{format, verify::Sha256Verifier}; /// Generate `format::Installer` pub async fn generate_installer_details( architecture: format::Architecture, + base_urls: &[String], artifact: &Path, ) -> anyhow::Result<format::Installer> { let mut file = fs::File::open(artifact) @@ -28,14 +29,28 @@ pub async fn generate_installer_details( .context("Failed to reset file pos")?; let file = BufReader::new(file); + println!("Generating checksum for {}", artifact.display()); + let checksum = Sha256Verifier::generate_hash(file) .await .context("Failed to compute checksum")?; + // Construct URLs from base URLs + let filename = artifact + .file_name() + .and_then(|f| f.to_str()) + .context("Unexpected filename")?; + let urls = base_urls + .iter() + .map(|base_url| { + let base_url = base_url.split('/').next().unwrap_or(base_url); + format!("{base_url}/{}", filename) + }) + .collect(); + Ok(format::Installer { architecture, - // TODO: fetch cdns from config - urls: vec![], + urls, size: file_size.try_into().context("Invalid file size")?, sha256: hex::encode(checksum), }) diff --git a/mullvad-update/meta/src/main.rs b/mullvad-update/meta/src/main.rs index 8c3cd478a9..59d869c505 100644 --- a/mullvad-update/meta/src/main.rs +++ b/mullvad-update/meta/src/main.rs @@ -171,7 +171,9 @@ async fn main() -> anyhow::Result<()> { println!("\nchanges.txt for tag {version}:\n\n-- begin\n{changes}\n--end\n\n"); for platform in all_platforms_if_empty(platforms) { - platform.add_release(&version, &changes, rollout).await?; + platform + .add_release(&version, &changes, &config.base_urls, rollout) + .await?; } Ok(()) } diff --git a/mullvad-update/meta/src/platform.rs b/mullvad-update/meta/src/platform.rs index f5cae74dea..31fc145f24 100644 --- a/mullvad-update/meta/src/platform.rs +++ b/mullvad-update/meta/src/platform.rs @@ -248,9 +248,10 @@ impl Platform { &self, version: &mullvad_version::Version, changes: &str, + base_urls: &[String], rollout: f32, ) -> anyhow::Result<()> { - let installers = self.installers(version).await?; + let installers = self.installers(version, base_urls).await?; // Fetch WIP versions and verify that release does not exist let work_path = self.work_path(); @@ -292,18 +293,28 @@ impl Platform { async fn installers( &self, version: &mullvad_version::Version, + base_urls: &[String], ) -> anyhow::Result<Vec<format::Installer>> { let mut installers = vec![]; let artifacts = self.artifact_filenames(version); for artifact in artifacts.arm64_artifacts { installers.push( - artifacts::generate_installer_details(format::Architecture::Arm64, &artifact) - .await?, + artifacts::generate_installer_details( + format::Architecture::Arm64, + base_urls, + &artifact, + ) + .await?, ); } for artifact in artifacts.x86_artifacts { installers.push( - artifacts::generate_installer_details(format::Architecture::X86, &artifact).await?, + artifacts::generate_installer_details( + format::Architecture::X86, + base_urls, + &artifact, + ) + .await?, ); } Ok(installers) |
