2012-01-24 14:38:42 +01:00
|
|
|
#!/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
|
|
|
|
|
2012-02-23 13:34:01 +01:00
|
|
|
# The path is considered whitelisted if any of these entries appear
|
2012-01-24 14:38:42 +01:00
|
|
|
# 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()
|