def __init__ (self, groupname):
self.groupname=groupname
self.files=[]
+ self.count = 0
def insert (self, file):
self.files.append(file)
def epilogue (self):
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:
self.prefix=prefix
self.suffix=suffix
self.options=options
+ self.todelete = 0
+ self.oldest = None
+ self.newest = None
# will contain tuples (filename, datetime)
self.list = []
def add_file (self, dir, filename, datetime):
try:
self.list.append ( File (dir, filename, datetime, self.options) )
+ self.newest = datetime
+ if not self.oldest:
+ self.oldest = datetime
except FileIgnored: pass
except:
print 'could not append %s'%filename
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:
for filename in filenames:
(b,p,s,d) = parse_filename (filename)
if not b:
- print "Filename %s does not match - skipped"%filename
+ if self.options.verbose:
+ print "Filename %s does not match - skipped"%filename
continue
self.insert (dir, filename, p, s, d)
kind.cleanup()
def summary (self):
- print "%-30s%-10s%s"%("Prefix","Suffix","Num")
+ print "%-30s%-10s%10s%25s%25s"%("Prefix","Suffix","Num (Del)","Oldest","Newest")
for kind in self.index.values():
- print "%-30s%-10s%3s"%(kind.prefix, kind.suffix, len(kind.list))
+ print "%-30s%-10s%3s (%3s) %30s%30s"%(kind.prefix, kind.suffix, len(kind.list), kind.todelete, kind.oldest, kind.newest)
def handle_dir_pattern (index, dir, pattern):
try:
parser.add_option ("-o","--offset",dest='offset',action='store',type='int',default=0,
help="pretend we run <offset> days in the future")
parser.add_option ("-s","--summary",dest='summary',action='store_true',default=False,
- help="print a summary then exit")
+ help="print a summary")
(options, args) = parser.parse_args()
if options.extra_verbose: options.verbose=True
try:
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 options.verbose:
+ print 'Found %d entries to unlink'%counter
if __name__ == '__main__':
main()