show num of files to delete in summary
authorCiro Scognamiglio <c.scognamiglio@cslash.net>
Thu, 12 Jul 2012 15:40:42 +0000 (17:40 +0200)
committerCiro Scognamiglio <c.scognamiglio@cslash.net>
Thu, 12 Jul 2012 15:40:42 +0000 (17:40 +0200)
scripts/clean-backupdb.py

index ab15ddf..914de92 100755 (executable)
@@ -152,7 +152,9 @@ class File:
         global counter
         counter+=1
         src = os.path.abspath(os.path.basename(self.path()));
-        if self.options.destination:
+        if self.options.summary:
+            pass
+        elif self.options.destination:
             dst = os.path.abspath(self.options.destination) + '/' + os.path.basename(self.path())
             if self.options.verbose:
                 print "moving %s\n\tto %s"%(self.path(), dst)
@@ -171,6 +173,7 @@ class Group:
     def __init__ (self, groupname):
         self.groupname=groupname
         self.files=[]
+        self.count = 0
     def insert (self, file):
         self.files.append(file)
     def epilogue (self):
@@ -178,6 +181,7 @@ class Group:
     def keep_one (self):
         for file in self.files[1:]:
             file.cleanup(self.files[0])
+            self.count += 1
 
 # all files with the same (prefix, suffix)
 class Kind:
@@ -186,6 +190,7 @@ class Kind:
         self.prefix=prefix
         self.suffix=suffix
         self.options=options
+        self.todelete = 0
         # will contain tuples (filename, datetime)
         self.list = []
 
@@ -249,6 +254,7 @@ class Kind:
         for groupname in groupnames:
             if self.options.extra_verbose: print 'GROUP',groupname
             self.groups[groupname].keep_one()
+            self.todelete += self.groups[groupname].count
 
 # keeps an index of all files found, index by (prefix, suffix), then sorted by time
 class Index:
@@ -287,9 +293,9 @@ class Index:
             kind.cleanup()
             
     def summary (self):
-        print "%-30s%-10s%s"%("Prefix","Suffix","Num")
+        print "%-30s%-10s%s"%("Prefix","Suffix","Num (Del)")
         for kind in self.index.values():
-            print "%-30s%-10s%3s"%(kind.prefix, kind.suffix, len(kind.list))
+            print "%-30s%-10s%3s (%s)"%(kind.prefix, kind.suffix, len(kind.list), kind.todelete)
 
 def handle_dir_pattern (index, dir, pattern):
     try:
@@ -351,10 +357,10 @@ def main ():
     for (dir, pattern) in dir_patterns: handle_dir_pattern (index, dir, pattern)
     index.epilogue()
     index.show()
+    index.cleanup()
     if (options.summary) :
         index.summary()
-    else:
-        index.cleanup()
+    
     print 'Found %d entries to unlink'%counter
             
 if __name__ == '__main__':