diff --git a/Cargo.lock b/Cargo.lock index c638ebafa4bd9..fb14b1bb40593 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 1e08c9a768b0d..d47a9f9ae072b 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 d501e6d93fdc1..fc4bef90a7ba9 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?;