From 69572fcc095b3fda551afeddc29e6e2a7fcbbf3e Mon Sep 17 00:00:00 2001
From: Alan De Smet <alan.desmet@ssec.wisc.edu>
Date: Fri, 12 May 2023 10:07:57 -0500
Subject: [PATCH] Unify clean up report generation

---
 csppfetch/__init__.py       | 10 ++++++++++
 example/aitf-clean-temporal |  4 ++--
 example/aitf-data-for-run   |  4 ++--
 example/aitf-update-cache   |  4 ++--
 4 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/csppfetch/__init__.py b/csppfetch/__init__.py
index e2db4ef..d444bab 100644
--- a/csppfetch/__init__.py
+++ b/csppfetch/__init__.py
@@ -511,13 +511,23 @@ class CleaningStats:
         self.size_deleted = 0
         self.num_kept = 0
         self.size_kept = 0
+
     def deleted(self, filename, size):
         self.num_deleted += 1
         self.size_deleted += size
+
     def kept(self, filename, size):
         self.num_kept += 1
         self.size_kept += size
 
+    def report(self):
+        """ Return list of strings suitable for output to user, one per line """
+        return [
+            f'Removed {self.num_deleted:,} files totaling {human_bytes(self.size_deleted)} bytes',
+            f'Kept {self.num_kept:,} files totaling {human_bytes(self.size_kept)} bytes',
+            ]
+
+
 def unlink_if_old(filename, expiration_time, stats):
     """ If filename's mtime is older than expiration_time, remove it
 
diff --git a/example/aitf-clean-temporal b/example/aitf-clean-temporal
index 45cea89..87376c6 100755
--- a/example/aitf-clean-temporal
+++ b/example/aitf-clean-temporal
@@ -112,8 +112,8 @@ def main():
             csppfetch.delete_old_files(args.temporal_dir+"/L2",  args.oldest, stats)
             if args.want_summary:
                 sys.stdout.write('Expiring Old Temporal Data Summary\n')
-                sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
-                sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+                for line in stats.report():
+                    sys.stdout.write(f"    {line}\n")
         else: # No lock
             sys.stdout.write("Cleaning skipped; another process is already doing so.")
 
diff --git a/example/aitf-data-for-run b/example/aitf-data-for-run
index 149695e..a373c20 100755
--- a/example/aitf-data-for-run
+++ b/example/aitf-data-for-run
@@ -171,8 +171,8 @@ def main():
         stats = aitf.ancil.csppfetch.delete_old_files(args.cache, expiration)
         if args.want_summary:
             sys.stdout.write('Expiring Old Data Summary\n')
-            sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
-            sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+            for line in stats.report():
+                sys.stdout.write(f'    {line}\n')
 
     return 0
 
diff --git a/example/aitf-update-cache b/example/aitf-update-cache
index 9797d53..6d7df93 100755
--- a/example/aitf-update-cache
+++ b/example/aitf-update-cache
@@ -153,8 +153,8 @@ def main():
         stats = aitf.ancil.csppfetch.delete_old_files(args.dir, expiration)
         if args.want_summary:
             sys.stdout.write('Expiring Old Data Summary\n')
-            sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
-            sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+            for line in stats.report():
+                sys.stdout.write(f'    {line}\n')
 
     return 0
 
-- 
GitLab