]> git.decadent.org.uk Git - dak.git/blobdiff - dak/clean_suites.py
marge from master
[dak.git] / dak / clean_suites.py
index 7ea90b8254cacadadd1d6d9b368bd7141b5b6bd2..52b2a8ccb1f4504003ff487493305e9577ef707c 100755 (executable)
@@ -263,6 +263,7 @@ SELECT s.id, f.filename FROM source s, files f
         session.commit()
 
     if count > 0:
+        Logger.log(["total", count, utils.size_type(size)])
         print "Cleaned %d files, %s." % (count, utils.size_type(size))
 
 ################################################################################
@@ -290,6 +291,7 @@ SELECT m.id, m.name FROM maintainer m
         session.commit()
 
     if count > 0:
+        Logger.log(["total", count])
         print "Cleared out %d maintainer entries." % (count)
 
 ################################################################################
@@ -317,6 +319,7 @@ SELECT f.id, f.fingerprint FROM fingerprint f
         session.commit()
 
     if count > 0:
+        Logger.log(["total", count])
         print "Cleared out %d fingerprint entries." % (count)
 
 ################################################################################
@@ -351,10 +354,38 @@ def clean_queue_build(now_date, delete_date, max_delete, session):
         session.commit()
 
     if count:
+        Logger.log(["total", count])
         print "Cleaned %d queue_build files." % (count)
 
 ################################################################################
 
+def clean_empty_directories(session):
+    """
+    Removes empty directories from pool directories.
+    """
+
+    count = 0
+
+    cursor = session.execute(
+        "SELECT DISTINCT(path) FROM location WHERE type = :type",
+        {'type': 'pool'},
+    )
+    bases = [x[0] for x in cursor.fetchall()]
+
+    for base in bases:
+        for dirpath, dirnames, filenames in os.walk(base, topdown=False):
+            if not filenames and not dirnames:
+                to_remove = os.path.join(base, dirpath)
+                if not Options["No-Action"]:
+                    Logger.log(["removing directory", to_remove])
+                    os.removedirs(to_remove)
+                count += 1
+
+    if count:
+        Logger.log(["total removed directories", count])
+
+################################################################################
+
 def main():
     global Options, Logger
 
@@ -400,6 +431,7 @@ def main():
     clean_maintainers(now_date, delete_date, max_delete, session)
     clean_fingerprints(now_date, delete_date, max_delete, session)
     clean_queue_build(now_date, delete_date, max_delete, session)
+    clean_empty_directories(session)
 
     Logger.close()