From 40a9033375ce0ff2d7f362b0866b480f9cf69f66 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:13:12 +1100 Subject: [PATCH] Impl `self_install` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- crates/bin/src/entry.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/bin/src/entry.rs b/crates/bin/src/entry.rs index 39d29ab4..aa1f9199 100644 --- a/crates/bin/src/entry.rs +++ b/crates/bin/src/entry.rs @@ -5,6 +5,7 @@ use std::{ time::Duration, }; +use atomic_file_install::atomic_install; use binstalk::{ errors::{BinstallError, CrateContextError}, fetchers::{Fetcher, GhCrateMeta, QuickInstall, SignaturePolicy}, @@ -588,7 +589,6 @@ fn do_install_fetches_continue_on_failure( pub fn self_install( args: Args, - binary: &Path ) -> Result<()> { // Load .cargo/config.toml let cargo_home = cargo_home().map_err(BinstallError::from)?; @@ -604,7 +604,12 @@ pub fn self_install( &mut config, )?; - // copy + let dest = install_path.join("cargo-binstall"); + if cfg!(windows) { + assert!(dest.set_extension("exe")); + } + + atomic_install(&env::current_exe()?, &dest)?; if let Some(manifests) = manifests { manifests.update(vec![CrateInfo {