From 09be08516388b89859bcc77c2a81ecae763e70d5 Mon Sep 17 00:00:00 2001 From: Adam Goldsmith Date: Thu, 18 Feb 2016 19:03:40 -0500 Subject: [PATCH] Add due script --- due | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 due diff --git a/due b/due new file mode 100755 index 0000000..9fa1728 --- /dev/null +++ b/due @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 + +import os +import re +import subprocess +import sys +from datetime import datetime + +TAGS = ['t', 'due'] + +def getTag(item): + if ":" not in item: + return None + try: + sub = re.findall("[^ ]+:\\d\\d\\d\\d-\\d\\d-\\d\\d", item)[0].strip() + except IndexError: + return None + return sub.split(":") + +def getDate(date): + return datetime.strptime(date, "%Y-%m-%d") + +def highlightDate(item): + full_tag = item[1] + ":" + item[0] + if getDate(item[0]) < datetime.today(): + #if the date has already passed, wrap with bold/unbold escapes + item[2] = item[2].replace(full_tag, '\033[1m' + full_tag + '\033[22m') + return item + +def relativeDate(item): + full_tag = item[1] + ":" + item[0] + difference = getDate(item[0]) - datetime.today() + item[2] = item[2].replace(full_tag, item[1] + ":" + str(difference.days) + "days") + return item + +def main(argv): + lines = subprocess.check_output(["todo.sh", "list"]).decode(encoding='UTF-8').split('\n') + items = [] + for line in lines: + tag = getTag(line) + if tag is not None: + items.append([tag[1], tag[0], line]) + + items.sort() + for i in items: + if len(argv) > 2 and argv[2] == "rel": + print(relativeDate(highlightDate(i))[2]) + else: + print(highlightDate(i)[2]) + +#if __name__ == '__main__': +main(sys.argv)