Skip to content

Commit

Permalink
cleaning empty directories is default off, behind a flag
Browse files Browse the repository at this point in the history
  • Loading branch information
aerickson committed Jul 24, 2024
1 parent 18ae6a8 commit 262e2ee
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 2 deletions.
14 changes: 12 additions & 2 deletions directory_cleaner/directory_cleaner.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,19 @@


class DirectoryCleaner:
def __init__(self, directory_path, exception_list, debug_mode=False, dry_run=False):
def __init__(
self,
directory_path,
exception_list,
debug_mode=False,
dry_run=False,
remove_empty_directories=False,
):
self.directory_path = directory_path
self.exception_list = exception_list
self.debug_mode = debug_mode
self.dry_run = dry_run
self.remove_empty_directories = remove_empty_directories
self.result = {
"skipped": [],
"deleted_files": [],
Expand All @@ -36,7 +44,9 @@ def clean_directory(self):

self._debug_print(f"Cleaning directory '{self.directory_path}'...")
self._clean_non_recursive()
self._remove_empty_directories()

if self.remove_empty_directories:
self._remove_empty_directories()

# Combine deleted files and directories into the deleted field
self.result["deleted"] = sorted(
Expand Down
26 changes: 26 additions & 0 deletions directory_cleaner/directory_cleaner_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,32 @@ def test_directory_cleaner(self):
dc = DC.DirectoryCleaner(self.temp_dir1, exception_list)
result = dc.clean_directory()
# print(result)
assert result["deleted"] == sorted(
[
str(Path(self.temp_dir1) / "generic-worker.cfg.bak"),
str(Path(self.temp_dir1) / "junk1"),
str(Path(self.temp_dir1) / "junk2"),
str(Path(self.temp_dir1) / "junk_dir/junk4"),
str(Path(self.temp_dir1) / "misc/blah.txt"),
str(Path(self.temp_dir1) / "misc3"),
]
)
assert result["skipped"] == sorted(
[
str(Path(self.temp_dir1) / "tasks"),
str(Path(self.temp_dir1) / "generic-worker.cfg"),
str(Path(self.temp_dir1) / "misc2"),
str(Path(self.temp_dir1) / "caches"),
]
)

def test_directory_cleaner_with_dir_cleaning(self):
exception_list = ["generic-worker.cfg", "tasks", "caches", "misc2"]
dc = DC.DirectoryCleaner(
self.temp_dir1, exception_list, remove_empty_directories=True
)
result = dc.clean_directory()
# print(result)
assert result["deleted"] == sorted(
[
str(Path(self.temp_dir1) / "generic-worker.cfg.bak"),
Expand Down

0 comments on commit 262e2ee

Please sign in to comment.