This afternoon is TODO time (since my main job of the day - generating nice little help tooltips - was solved by the very cool overlib.) So, in usual fashion I avoid the job for a while and write a script to help me. The following is the result, finding all TODO items in source trees and printing them out with some context:
#! /usr/bin/env python2.3 import sys, os def walker(args, path, filenames): for filename in filenames: joined = os.path.join(path, filename) if os.path.isdir(joined): continue # find lines to display, at least 2 either side of a TODO marker lines = open(joined).readlines() display = {} for i, line in enumerate(lines): if 'TODO' not in line: continue for n in range(i-2, i+3): display[n] = 1 if not display: continue # organise the lines to display display = [n for n in display.keys() if n >= 0 and n < len(lines)] display.sort() # print them print '**', joined last = None for n in display: if last is not None and n > last+1: print '---' last = n sys.stdout.write(lines[n]) print '*'*75 if __name__=='__main__': for arg in sys.argv[1:]: os.path.walk(arg, walker, None)
Yes, I took the time to have a look at some new python 2.3 features too (see if you can spot them :)