From 47ade2f9f9971925d06ead61b23f6aec2025a394 Mon Sep 17 00:00:00 2001 From: Peter Tripp Date: Tue, 22 Oct 2024 21:12:26 +0000 Subject: [PATCH] Check for rsync before downloading updates (#19392) --- Cargo.lock | 1 + crates/auto_update/Cargo.toml | 1 + crates/auto_update/src/auto_update.rs | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 6a94aa1a4cd532783d46d24e78a7075b50ad8eb6..3e48e87d6f30b766f2446117c78b5a0dc059395b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1009,6 +1009,7 @@ dependencies = [ "smol", "tempfile", "util", + "which 6.0.3", "workspace", ] diff --git a/crates/auto_update/Cargo.toml b/crates/auto_update/Cargo.toml index 1e08c9a768b0d5f7294ade86f21bd07fb7ac9d45..d47a9f9ae072b8510f8318a4c11b801cc630826a 100644 --- a/crates/auto_update/Cargo.toml +++ b/crates/auto_update/Cargo.toml @@ -32,4 +32,5 @@ settings.workspace = true smol.workspace = true tempfile.workspace = true util.workspace = true +which.workspace = true workspace.workspace = true diff --git a/crates/auto_update/src/auto_update.rs b/crates/auto_update/src/auto_update.rs index d501e6d93fdc11b0af89f8ec8010d7a8d97bde81..fc4bef90a7ba99ab54aba43919de219d8bceb7ec 100644 --- a/crates/auto_update/src/auto_update.rs +++ b/crates/auto_update/src/auto_update.rs @@ -33,6 +33,7 @@ use std::{ }; use update_notification::UpdateNotification; use util::ResultExt; +use which::which; use workspace::notifications::NotificationId; use workspace::Workspace; @@ -560,6 +561,12 @@ impl AutoUpdater { "linux" => Ok("zed.tar.gz"), _ => Err(anyhow!("not supported: {:?}", OS)), }?; + + anyhow::ensure!( + which("rsync").is_ok(), + "Aborting. Could not find rsync which is required for auto-updates." + ); + let downloaded_asset = temp_dir.path().join(filename); download_release(&downloaded_asset, release, client, &cx).await?;