X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/8a7500e86bc3acd030d91c29eb694fac53d0c906..57704ed4307af96a5216711fd9bfdc6e170b4a66:/tasklib/task.py diff --git a/tasklib/task.py b/tasklib/task.py index 1121988..0f8d963 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -5,6 +5,7 @@ import json import logging import os import pytz +import re import six import sys import subprocess @@ -421,6 +422,12 @@ class Task(TaskResource): """ pass + class ActiveTask(Exception): + """ + Raised when the operation cannot be performed on the active task. + """ + pass + class InactiveTask(Exception): """ Raised when the operation cannot be performed on an inactive task. @@ -600,6 +607,8 @@ class Task(TaskResource): raise Task.CompletedTask("Cannot start a completed task") elif self.deleted: raise Task.DeletedTask("Deleted task cannot be started") + elif self.active: + raise Task.ActiveTask("Task is already active") self.warrior.execute_command([self['uuid'], 'start']) @@ -941,6 +950,22 @@ class TaskWarrior(object): stdout, stderr = [x.decode('utf-8') for x in p.communicate()] return stdout.strip('\n') + def get_config(self): + raw_output = self.execute_command( + ['show'], + config_override={'verbose': 'nothing'} + ) + + config = dict() + config_regex = re.compile(r'^(?P[_a-z\.]+)\s+(?P[^\s].+$)') + + for line in raw_output: + match = config_regex.match(line) + if match: + config[match.group('key')] = match.group('value').strip() + + return config + def execute_command(self, args, config_override={}, allow_failure=True, return_all=False): command_args = self._get_command_args(