#!/usr/bin/env python # Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. # # Use of this source code is governed by a BSD-style license # that can be found in the LICENSE file in the root of the source # tree. An additional intellectual property rights grant can be found # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. __author__ = "ivinnichenko@webrtc.org (Illya Vinnichenko)" from optparse import OptionParser import os import sys import time # The path is considered whitelisted if any of these entries appear # at some point in the path WHITELIST = ["buildbot.tac", "master.cfg", "public_html", "changes.pck", "webrtc_buildbot"] def is_whitelisted(path): """Check if file is whitelisted. path: file path. """ for entry in WHITELIST: if entry in path: return True return False def remove_old_filenames(path, num_days, verbose): """Remove old files. path: base directory for removal. num_days: days limit for removal. verbose: print every cmd? """ print "Cleaning up everything in %s older than %s days" % (path, num_days) current_time = time.time() limit = 60*60*24*num_days for root, unused_dirs, files in os.walk(path): for filename in files: current_file = os.path.join(root, filename) if is_whitelisted(current_file): continue time_stamp = os.stat(current_file).st_mtime if (current_time - time_stamp) > limit: str_stamp = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime(time_stamp)) if verbose: print "Removing [%s], stamped on %s" % (current_file, str_stamp) os.remove(current_file) def main(): usage = "usage: %prog [options] arg" parser = OptionParser(usage) parser.add_option("-p", "--path", dest="cleanup_path", help="base directory") parser.add_option("-n", "--num_days", dest="num_days", help="number of days") parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout") options, args = parser.parse_args() if not options.cleanup_path: print "You must specify base directory" sys.exit(2) if not options.num_days: print "You must specify number of days old" sys.exit(2) remove_old_filenames(options.cleanup_path, int(options.num_days), options.verbose) if __name__ == "__main__": main()