I have a pretty good memory when it comes to juggling multiple tasks but I am (and have been for some time) trying to break my self of using my brain to store everything. One area a worklog benefits is when you want to look back over time and see what your were working on several months ago (this can be helpful for reviews). At any rate there are many tools to do similar things. At any rate I wrote a simple tool to try and help with this. Feel free to take it modify it or comment on the horrible code.
#!/usr/bin/env python # Author Nick Anderson <nick#anders0n.net> # Simple worklog to log entries and show entries for a # matched string. # Examples: # worklog this is an entry # worklog # Prompted to type an entry # worklog --show 2008 Dec # worklog --show 2008 December 08 # Show todays entries with just --show # worklog --show import sys, re, os from optparse import OptionParser from time import localtime, strftime worklogfile = 'worklog.log' homedir = os.path.expanduser("~") + '/' worklog = homedir + worklogfile def displayLog(inputstring): """ Display all log entries for dates matching string. If no date string given, default to today. """ if len(args) == 0: date = today else: date = " ".join(args) file = open(worklog, 'r') for line in file.readlines(): if re.match('\t', line): if print_entry: print line.rstrip() elif re.match(date, line): print_entry = True print line.rstrip() else: print_entry = False file.close def writeLog(inputstring): """ Write a log entry for the current date inputstring - arguments passed to script """ entries_today = False file = open(worklog, "ra") for line in file.readlines(): if line.rstrip('\n') == today: entries_today = True file.close() file = open(worklog, "a") if not entries_today: file.write(today + '\n') if len(args) == 0: print "Log Entry:" entry = '\t' + sys.stdin.readline() else: entry = '\t' + " ".join(inputstring) + '\n' file.write(entry) file.close() if __name__ == '__main__': today = strftime("%Y %B %d %A", localtime()) parser = OptionParser() parser.add_option("-s", "--show", dest="show", action="store_true", help="Show entries for date") (options, args) = parser.parse_args() if options.show: displayLog(args) else: try: writeLog(args) except KeyboardInterrupt: sys.exit()
Example Usage:
worklog I did something worklog --show 2008 December 08 Monday I did something