From adb5d4ade37deab0c42af67cd7d2fdbdc46bc483 Mon Sep 17 00:00:00 2001 From: Joscha Date: Wed, 26 May 2021 10:58:19 +0200 Subject: [PATCH] Print files that are *not* deleted by cleanup These are files that are not present on the remote source any more, but still present locally. They also show up in the report. --- PFERD/output_dir.py | 3 +++ PFERD/pferd.py | 3 +++ PFERD/report.py | 11 +++++++++++ 3 files changed, 17 insertions(+) diff --git a/PFERD/output_dir.py b/PFERD/output_dir.py index 7883ee0..304101a 100644 --- a/PFERD/output_dir.py +++ b/PFERD/output_dir.py @@ -493,6 +493,9 @@ class OutputDirectory: self._report.delete_file(pure) except OSError: pass + else: + log.status(f"[bold bright_magenta]Not deleted[/] {escape(fmt_path(pure))}") + self._report.not_delete_file(pure) def load_prev_report(self) -> None: log.explain_topic(f"Loading previous report from {fmt_real_path(self._report_path)}") diff --git a/PFERD/pferd.py b/PFERD/pferd.py index df48bd2..7f4d6ff 100644 --- a/PFERD/pferd.py +++ b/PFERD/pferd.py @@ -136,6 +136,9 @@ class Pferd: for path in sorted(crawler.report.deleted_files): something_changed = True log.report(f" [bold bright_magenta]Deleted[/] {fmt_path(path)}") + for path in sorted(crawler.report.not_deleted_files): + something_changed = True + log.report(f" [bold bright_magenta]Not deleted[/] {fmt_path(path)}") if not something_changed: log.report(" Nothing changed") diff --git a/PFERD/report.py b/PFERD/report.py index 4f15237..b47490f 100644 --- a/PFERD/report.py +++ b/PFERD/report.py @@ -56,6 +56,7 @@ class Report: self.added_files: Set[PurePath] = set() self.changed_files: Set[PurePath] = set() self.deleted_files: Set[PurePath] = set() + self.not_deleted_files: Set[PurePath] = set() @staticmethod def _get_list_of_strs(data: Dict[str, Any], key: str) -> List[str]: @@ -93,6 +94,8 @@ class Report: self.change_file(PurePath(elem)) for elem in self._get_list_of_strs(data, "deleted"): self.delete_file(PurePath(elem)) + for elem in self._get_list_of_strs(data, "not_deleted"): + self.not_delete_file(PurePath(elem)) return self @@ -107,6 +110,7 @@ class Report: "added": [str(path) for path in sorted(self.added_files)], "changed": [str(path) for path in sorted(self.changed_files)], "deleted": [str(path) for path in sorted(self.deleted_files)], + "not_deleted": [str(path) for path in sorted(self.not_deleted_files)], } with open(path, "w") as f: @@ -163,3 +167,10 @@ class Report: """ self.deleted_files.add(path) + + def not_delete_file(self, path: PurePath) -> None: + """ + Unlike mark(), this function accepts any paths. + """ + + self.not_deleted_files.add(path)