From c765459c5d36e5589bd3d39aaae572688bdfd329 Mon Sep 17 00:00:00 2001 From: Jeff Dickey <216188+jdx@users.noreply.github.com> Date: Wed, 27 Nov 2024 18:45:25 -0600 Subject: [PATCH 1/2] fix: clean up some windows error cases --- src/file.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/file.rs b/src/file.rs index c17bb82fe5..414a15683d 100644 --- a/src/file.rs +++ b/src/file.rs @@ -178,8 +178,13 @@ pub fn create_dir_all>(path: P) -> Result<()> { let path = path.as_ref(); if !path.exists() { trace!("mkdir -p {}", display_path(path)); - fs::create_dir_all(path) - .wrap_err_with(|| format!("failed create_dir_all: {}", display_path(path)))?; + if let Err(err) = fs::create_dir_all(path) { + // if not exists error + if err.kind() != std::io::ErrorKind::AlreadyExists { + return Err(err) + .wrap_err_with(|| format!("failed create_dir_all: {}", display_path(path))); + } + } } Ok(()) } @@ -310,8 +315,16 @@ pub fn make_symlink(target: &Path, link: &Path) -> Result<(PathBuf, PathBuf)> { #[cfg(windows)] //#[deprecated] pub fn make_symlink(target: &Path, link: &Path) -> Result<(PathBuf, PathBuf)> { - junction::create(target, link) - .wrap_err_with(|| format!("failed to ln -sf {} {}", target.display(), link.display()))?; + if let Err(err) = junction::create(target, link) { + if err.kind() == std::io::ErrorKind::AlreadyExists { + let _ = fs::remove_file(link); + junction::create(target, link) + } else { + Err(err) + } + } else { + Ok(()) + }.wrap_err_with(|| format!("failed to ln -sf {} {}", target.display(), link.display()))?; Ok((target.to_path_buf(), link.to_path_buf())) } From d7961584b99ee23ea8490c0489bfdc390556f1b7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 00:49:58 +0000 Subject: [PATCH 2/2] [autofix.ci] apply automated fixes --- src/file.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/file.rs b/src/file.rs index 414a15683d..ac2e0d9591 100644 --- a/src/file.rs +++ b/src/file.rs @@ -324,7 +324,8 @@ pub fn make_symlink(target: &Path, link: &Path) -> Result<(PathBuf, PathBuf)> { } } else { Ok(()) - }.wrap_err_with(|| format!("failed to ln -sf {} {}", target.display(), link.display()))?; + } + .wrap_err_with(|| format!("failed to ln -sf {} {}", target.display(), link.display()))?; Ok((target.to_path_buf(), link.to_path_buf())) }