diff options
author | Johannes Löthberg <johannes@kyriasis.com> | 2014-09-10 22:37:11 +0200 |
---|---|---|
committer | Johannes Löthberg <johannes@kyriasis.com> | 2014-09-10 22:37:11 +0200 |
commit | e298c9a6de1f93e1dc20e56535a9f9d6f4c9f0a7 (patch) | |
tree | a94d53ac5e3d1c1950703396d88cf8465640fd4e | |
parent | 246cdbbf1b6f79833e0f16e42e24334f524679bb (diff) | |
download | bin-e298c9a6de1f93e1dc20e56535a9f9d6f4c9f0a7.tar.xz |
Add basic todo.py
Currently it just prints the todo items from a TOML formated file.
Should bother to add a function for adding and deleting todos sometime.
-rwxr-xr-x | todo.py | 61 |
1 files changed, 61 insertions, 0 deletions
@@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +""" +Usage: todo [--priority | --date] [--reverse] + +Options: + -p --priority Sort by priority + -d --date Sort by date + -r --reverse Reverse sort order + -h --help Show this screen. + -v --version Show version. +""" + +from sys import exit +from collections import OrderedDict +from docopt import docopt +import pytoml + + +def sort_toml(toml_dict, sort_key, rev=False): + return sorted( + list(toml_dict.items()), + key=lambda d: (sort_key not in d[1], d[1].get(sort_key, None)), + reverse=rev) + +def main(): + arguments = docopt(__doc__, version='todo 0.0.1.alpha') + print(arguments) + if arguments['--date']: + sort_key = 'date' + elif arguments['--priority']: + sort_key = 'priority' + else: + sort_key = 'priority' + rev = arguments['--reverse'] + + with open("/home/kyrias/documents/notes/TODO.toml", "rt") as in_file: + tasks = in_file.read() + + unsorted = OrderedDict(sorted(pytoml.loads(tasks).items())) + sorted_toml = OrderedDict(sort_toml(unsorted, sort_key, rev)) + + print(sorted_toml) + + for t_id in sorted_toml: + task = sorted_toml[t_id] + output = "{}. ".format(t_id) + if 'priority' in task: + output += "({}) ".format(task['priority']) + if 'date' in task: + output += "{}".format(task['date']) + if 'description' in task: + output += "\n {}".format(task['description']) + if 'url' in task: + output += "\n URL: {}".format(task['url']) + if 'context' in task: + output += "\n Contexts: {}".format(task['context']) + + print(output) + +if __name__ == '__main__': + main() |