From b75cc2a90d6dbee2722412ce6a2cfd92db605760 Mon Sep 17 00:00:00 2001 From: guidable0 <68713456+guidable0@users.noreply.github.com> Date: Wed, 6 Dec 2023 18:08:05 +0200 Subject: [PATCH] Check that target exists before trying removing it --- src/lune/builtins/fs/copy.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lune/builtins/fs/copy.rs b/src/lune/builtins/fs/copy.rs index 677d0b2..2ec0f15 100644 --- a/src/lune/builtins/fs/copy.rs +++ b/src/lune/builtins/fs/copy.rs @@ -137,8 +137,13 @@ pub async fn copy( } else if is_dir { let contents = get_contents_at(source.to_path_buf(), options).await?; - if options.overwrite { - fs::remove_dir_all(target).await?; + if options.overwrite && target.exists() { + let metadata = fs::metadata(target).await?; + if metadata.is_file() { + fs::remove_file(target).await?; + } else if metadata.is_dir() { + fs::remove_dir_all(target).await?; + } } // FUTURE: Write dirs / files concurrently