From 1d7e6ce71c3fc81ac26050b4a4e69aae120c3292 Mon Sep 17 00:00:00 2001 From: guidable0 <68713456+guidable0@users.noreply.github.com> Date: Fri, 29 Dec 2023 16:52:12 +0200 Subject: [PATCH] Use match --- src/lune/builtins/fs/copy.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lune/builtins/fs/copy.rs b/src/lune/builtins/fs/copy.rs index 2ec0f15..10c77fc 100644 --- a/src/lune/builtins/fs/copy.rs +++ b/src/lune/builtins/fs/copy.rs @@ -137,12 +137,16 @@ pub async fn copy( } else if is_dir { let contents = get_contents_at(source.to_path_buf(), options).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() { + if options.overwrite { + let (is_dir, is_file) = match fs::metadata(&target).await { + Ok(meta) => (meta.is_dir(), meta.is_file()), + Err(e) if e.kind() == ErrorKind::NotFound => (false, false), + Err(e) => return Err(e.into()), + }; + if is_dir { fs::remove_dir_all(target).await?; + } else if is_file { + fs::remove_file(target).await?; } }