From c4097ae1a3aa82ee5b03d0aec220af2de9d11b58 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Sun, 8 Dec 2019 22:26:35 -0600 Subject: [PATCH] delete dir if dir --- src/ops/empty.rs | 6 +++++- src/utils.rs | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ops/empty.rs b/src/ops/empty.rs index 24a13c2..8be8b60 100644 --- a/src/ops/empty.rs +++ b/src/ops/empty.rs @@ -25,7 +25,11 @@ pub fn empty(dry: bool, days: Option) -> Result<(), Error> { println!("{:?}", file.path); } else { fs::remove_file(file.info_path)?; - fs::remove_file(file.deleted_path)?; + if file.deleted_path.is_dir() { + fs::remove_dir_all(file.deleted_path)?; + } else { + fs::remove_file(file.deleted_path)?; + } } } } diff --git a/src/utils.rs b/src/utils.rs index 148570b..05f711d 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -2,8 +2,8 @@ use std::env; use std::fs; use std::path::{Path, PathBuf}; -use walkdir::WalkDir; use anyhow::Error; +use walkdir::WalkDir; pub fn into_absolute(path: impl AsRef) -> Result { let path = path.as_ref(); @@ -23,7 +23,11 @@ pub fn recursive_copy(src: impl AsRef, dst: impl AsRef) -> Result<() let src = src.as_ref(); let dst = dst.as_ref(); - for entry in WalkDir::new(src).contents_first(false).follow_links(false).same_file_system(true) { + for entry in WalkDir::new(src) + .contents_first(false) + .follow_links(false) + .same_file_system(true) + { let entry = entry?; let path = entry.path(); let relative_path = path.strip_prefix(src)?;