From fb35863faa7aa7d8ce7efba478fffb5aa5d844ac Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Fri, 22 Jul 2022 17:08:02 +1000 Subject: [PATCH 1/2] Create `temp_dir` in `install_path` Signed-off-by: Jiahao XU --- src/main.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 2061ee8d..c759de50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -250,7 +250,13 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { debug!("Using install path: {}", install_path.display()); // Create a temporary directory for downloads etc. - let temp_dir = TempDir::new() + // + // Put all binaries to a temporary directory under `dst` first, catching + // some failure modes (e.g., out of space) before touching the existing + // binaries. This directory will get cleaned up via RAII. + let temp_dir = tempfile::Builder::new() + .prefix("cargo-binstall") + .tempdir_in(&install_path) .map_err(BinstallError::from) .wrap_err("Creating a temporary directory failed.")?; From 95c30122e971b78723f999b349b4e0c3a04a9125 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Fri, 22 Jul 2022 19:17:23 +1000 Subject: [PATCH 2/2] Rm unused import `tempfile::TempDir` in `main.rs` Signed-off-by: Jiahao XU --- src/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index c759de50..08a0c59d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,7 +11,6 @@ use clap::Parser; use log::{debug, error, info, warn, LevelFilter}; use miette::{miette, Result, WrapErr}; use simplelog::{ColorChoice, ConfigBuilder, TermLogger, TerminalMode}; -use tempfile::TempDir; use tokio::{runtime::Runtime, task::block_in_place}; use cargo_binstall::{binstall, *};