2021-04-27 13:49:08 +02:00
|
|
|
#! /usr/bin/env python3
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2021-04-28 10:17:23 +02:00
|
|
|
"""Todo.txt interface for `argos <https://github.com/p-e-w/argos>`."""
|
2021-04-27 13:49:08 +02:00
|
|
|
|
2021-04-28 10:17:23 +02:00
|
|
|
# <bitbar.title>todo</bitbar.title>
|
2021-04-27 13:49:08 +02:00
|
|
|
# <bitbar.version>v1.0</bitbar.version>
|
|
|
|
# <bitbar.author>Tobias Schmidl</bitbar.author>
|
|
|
|
# <bitbar.author.github>schtobia</bitbar.author.github>
|
2021-04-28 10:17:23 +02:00
|
|
|
# <bitbar.desc>Todo.txt interface</bitbar.desc>
|
2021-04-27 13:49:08 +02:00
|
|
|
# <bitbar.image></bitbar.image>
|
2021-04-28 10:17:23 +02:00
|
|
|
# <bitbar.dependencies>python,todotxtio</bitbar.dependencies>
|
|
|
|
# <bitbar.abouturl>https://gitlab.com/schtobia/argos-todo/blob/master/todo.py</bitbar.abouturl>
|
2021-04-27 13:49:08 +02:00
|
|
|
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
import todotxtio # type: ignore
|
|
|
|
|
|
|
|
__author__ = "Tobias Schmidl"
|
|
|
|
__copyright__ = "Copyright 2021, Tobias Schmidl"
|
|
|
|
__license__ = "MIT"
|
|
|
|
__version__ = "1.0"
|
|
|
|
__maintainer__ = "Tobias Schmidl"
|
|
|
|
|
|
|
|
TODO_TXT_PATH = Path.home() / '.todo-txt' / 'todo.txt'
|
|
|
|
COLOR_LIST = {
|
|
|
|
1: ['#fc8d59'],
|
|
|
|
2: ['#fc8d59', '#91cf60'],
|
|
|
|
3: ['#fc8d59', '#ffffbf', '#91cf60'],
|
|
|
|
4: ['#d7191c', '#fdae61', '#a6d96a', '#1a9641'],
|
|
|
|
5: ['#d7191c', '#fdae61', '#ffffbf', '#a6d96a', '#1a9641'],
|
|
|
|
6: ['#d73027', '#fc8d59', '#fee08b', '#d9ef8b', '#91cf60', '#1a9850'],
|
|
|
|
7: ['#d73027', '#fc8d59', '#fee08b', '#ffffbf', '#d9ef8b', '#91cf60', '#1a9850'],
|
|
|
|
8: ['#d73027', '#f46d43', '#fdae61', '#fee08b', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850'],
|
|
|
|
9: ['#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850'],
|
|
|
|
10: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],
|
|
|
|
11: [
|
|
|
|
'#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850',
|
|
|
|
'#006837'
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
list_of_tasks = todotxtio.from_file(TODO_TXT_PATH)
|
|
|
|
list_of_priorities = [int(x.priority, base=16) for x in list_of_tasks]
|
|
|
|
max_prio = max(list_of_priorities)
|
|
|
|
min_prio = min(list_of_priorities)
|
2021-04-27 14:34:48 +02:00
|
|
|
print("📋", len(list_of_tasks))
|
2021-04-27 13:49:08 +02:00
|
|
|
print("---")
|
|
|
|
for task in list_of_tasks:
|
|
|
|
priority = int(task.priority, base=16)
|
|
|
|
old_range = max_prio - min_prio + 1
|
|
|
|
new_range = len(set(list_of_priorities))
|
|
|
|
priority = int(((priority - min_prio) * new_range) / old_range)
|
|
|
|
if "due" not in task.tags:
|
|
|
|
print("<span size=\"larger\" weight=\"bold\">" + task.priority +
|
|
|
|
"</span>: <span size=\"medium\" foreground=\"" + COLOR_LIST[new_range][priority] + "\">" + task.text +
|
|
|
|
"</span>")
|
|
|
|
else:
|
|
|
|
print("<span size=\"larger\" weight=\"bold\">" + task.priority +
|
|
|
|
"</span>: <span size=\"medium\" background=\"white\" foreground=\"black\">" + task.tags["due"] +
|
|
|
|
"</span> <span size=\"medium\" foreground=\"" + COLOR_LIST[new_range][priority] + "\">" + task.text +
|
|
|
|
"</span>")
|
|
|
|
print("--", " ".join(["@" + x for x in task.contexts]))
|
|
|
|
print("--", " ".join(["+" + x for x in task.projects]))
|
|
|
|
print("--", " ".join([key + ": " + value for key, value in task.tags.items() if key != "due"]))
|