diff --git a/src/bins.rs b/src/bins.rs index c5ded440..ce51dffe 100644 --- a/src/bins.rs +++ b/src/bins.rs @@ -1,4 +1,4 @@ -use std::path::PathBuf; +use std::path::{PathBuf, Path}; use cargo_toml::Product; use log::debug; @@ -70,8 +70,8 @@ impl BinFile { format!( "{} ({} -> {})", self.base_name, - self.dest.display(), - self.link.display() + self.link.display(), + self.link_dest().display() ) } @@ -102,18 +102,26 @@ impl BinFile { std::fs::remove_file(&self.link)?; } + let dest = self.link_dest(); debug!( "Create link '{}' pointing to '{}'", self.link.display(), - self.dest.display() + dest.display() ); #[cfg(target_family = "unix")] - std::os::unix::fs::symlink(&self.dest, &self.link)?; + std::os::unix::fs::symlink(dest, &self.link)?; #[cfg(target_family = "windows")] - std::os::windows::fs::symlink_file(&self.dest, &self.link)?; + std::os::windows::fs::symlink_file(dest, &self.link)?; Ok(()) } + + fn link_dest(&self) -> &Path { + #[cfg(target_family = "unix")] + { Path::new(self.dest.file_name().unwrap()) } + #[cfg(target_family = "windows")] + { &self.dest } + } } /// Data required to get bin paths