blob: 204141d66de751d8575838bfce36b72fc8ed5d80 [file] [log] [blame]
#!/usr/bin/python
"""Script to clean up buildbot master directories"""
import os
from cPickle import load
def maybe_delete(filename, timestamp):
"""Delete filename if it's older than timestamp"""
try:
if os.path.getmtime(filename) < timestamp:
os.unlink(filename)
except OSError:
# Ignore this error. The file may have already been moved.
# We'll get it next time!
pass
def clean_dir(dirname, timestamp):
"""Delete old twisted log files, and old builder files from dirname"""
# Clean up files older than timestamp
files = os.listdir(dirname)
# Look for twistd.log files
for f in files:
p = os.path.join(dirname, f)
if os.path.isdir(p):
builder_file = os.path.join(p, "builder")
# Don't clean out non-builder directories
if not os.path.exists(builder_file):
continue
try:
builder = load(open(builder_file))
except:
continue
# Don't clean out release builders
if builder and builder.category and \
builder.category.find('release') > -1:
continue
for build in os.listdir(p):
# Don't delete the 'builder' file
if build == "builder":
continue
build = os.path.join(p, build)
if os.path.isfile(build):
maybe_delete(build, timestamp)
if __name__ == "__main__":
import time
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-t", "--time", dest="time", type="int",
help="time, in days, for how old files have to be before being deleted",
default=4)
options, args = parser.parse_args()
if len(args) == 0:
parser.error("Must specify at least one directory to clean up")
for d in args:
clean_dir(d, time.time() - options.time * 24 * 3600)