#!/usr/bin/env python # Show items from my to-do list. # Adam Sampson import os, re, datetime upcoming = {} day = datetime.date.today() for i in range(7): if i == 0: daylabel = "today" else: daylabel = day.strftime("%A") info = (day.toordinal(), daylabel + " " + day.strftime("%m%d")) upcoming[day.strftime("%Y%m%d")] = info upcoming[day.strftime("%m%d")] = info upcoming[day.strftime("%d")] = info upcoming[day.strftime("%A")] = info day += datetime.timedelta(days = 1) def scan_todo(fn): event_re = re.compile(r'^(\S+)\s(.*)$') f = open(fn) events = [] for l in f.readlines(): l = l.rstrip() if l == "" or l[0] == "#": continue m = event_re.match(l) if m is not None: (date, descr) = m.group(1, 2) if date in upcoming: events.append((upcoming[date], descr)) f.close() return events def main(): home = os.environ["HOME"] tododir = home + "/.todo" fns = [home + "/todolist"] fns += [tododir + "/" + f for f in os.listdir(tododir) if f[0] != "."] events = [] for fn in fns: events += scan_todo(fn) events.sort() for (info, descr) in events: print "%14s | %s" % (info[1], descr) if __name__ == "__main__": main()