#!/usr/bin/python import os import sys from os.path import abspath, dirname from operator import itemgetter ARG = sys.argv[1] class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' # assuming that this script is in ~/bin this will work: BASE_DIR = abspath(dirname(dirname(__file__))) + '/' project_list = [] waiting_list = [] for root, dirnames, filenames in os.walk('%sgtd' % (BASE_DIR)): for f in filenames: waiting = False inprogress = False if not f.startswith('@') and not f.startswith('.') and not f.startswith('Notes & Settings') and not f.startswith('projx') and not f.startswith("errands"): name = f[f.find("[") + 1:f.find("]")] task = f[f.find("]") + 2:-4] with open('%sgtd/%s' % (BASE_DIR, f), "r") as fl: for line in fl: for part in line.split(): if "@waiting" in part: waiting = True if name == ARG: project_list.append({ "file": f, "name": name, "task": task, "inprogress": inprogress, "waiting": waiting, }) break newlist = sorted(project_list, key=itemgetter('name', 'task')) #projects_file = open("/Users/sng/gtd/@projects.txt", 'w') l_name = '' for i,p in enumerate(newlist): if i == 0: print bcolors.WARNING + "------ %s TASKS -----" %(ARG) + bcolors.ENDC if not p['inprogress'] and not p['waiting']: if l_name == p['name']: print p['file'][:-4] else: if i != 0: print " " print p['file'][:-4] l_name = p['name']