]> git.madduck.net Git - etc/taskwarrior.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

TaskWarrior: Use default .taskrc
authorTomas Babej <tomasbabej@gmail.com>
Tue, 17 Mar 2015 22:19:05 +0000 (23:19 +0100)
committerTomas Babej <tomasbabej@gmail.com>
Wed, 18 Mar 2015 15:19:08 +0000 (16:19 +0100)
Currently, to make UDAs (adding/modifying tasks with UDA, filtering by
UDAs) one needs to update the TaskWarrior's config, as described in
docs:

http://tasklib.readthedocs.org/en/latest/#working-with-udas

This is a little bit tedious, since every application that uses tasklib,
and wants to support UDAs, needs to either parse the .taskrc file
itself, or have user specify the UDA configuration redundantly by some
other mechanism.

Also, by using rc:/ we are using default values for other config
settings, which may take users by surprise (i.e. if user sets a custom
value for recurrence.limit, and then any tasklib call will generate
more/less recurrence tasks than he wants to see).

This commit changes the approach and makes .taskrc the default
config file location.

tasklib/task.py

index 8a2ea7af0c480c0fab3f77633f7d380e7143e0d4..23f9277b4aef67b67d3a8359db0b33413eb87f53 100644 (file)
@@ -842,8 +842,15 @@ class TaskQuerySet(object):
 
 
 class TaskWarrior(object):
 
 
 class TaskWarrior(object):
-    def __init__(self, data_location='~/.task', create=True):
+    def __init__(self, data_location='~/.task', create=True, taskrc_location='~/.taskrc'):
         data_location = os.path.expanduser(data_location)
         data_location = os.path.expanduser(data_location)
+        self.taskrc_location = os.path.expanduser(taskrc_location)
+
+        # If taskrc does not exist, pass / to use defaults and avoid creating
+        # dummy .taskrc file by TaskWarrior
+        if not os.path.exists(self.taskrc_location):
+            self.taskrc_location = '/'
+
         if create and not os.path.exists(data_location):
             os.makedirs(data_location)
         self.config = {
         if create and not os.path.exists(data_location):
             os.makedirs(data_location)
         self.config = {
@@ -856,7 +863,7 @@ class TaskWarrior(object):
         self.version = self._get_version()
 
     def _get_command_args(self, args, config_override={}):
         self.version = self._get_version()
 
     def _get_command_args(self, args, config_override={}):
-        command_args = ['task', 'rc:/']
+        command_args = ['task', 'rc:{0}'.format(self.taskrc_location)]
         config = self.config.copy()
         config.update(config_override)
         for item in config.items():
         config = self.config.copy()
         config.update(config_override)
         for item in config.items():