mirror of
https://github.com/sahinakkaya/dotfiles.git
synced 2024-11-25 01:49:37 +01:00
Add taskwarrior config
This commit is contained in:
parent
23708bf23f
commit
2dd52a9fbf
67
.config/task/hooks/on-modify.timewarrior
Executable file
67
.config/task/hooks/on-modify.timewarrior
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
'''Timewarrior on-modify hook to call timew on start,stop, done commands.'''
|
||||||
|
import json
|
||||||
|
import shlex
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def retrieve_args_dict():
|
||||||
|
'''Read process arguments and store them in a dictionary.'''
|
||||||
|
process_args = sys.argv[1:]
|
||||||
|
dictionary = dict()
|
||||||
|
for process_arg in process_args:
|
||||||
|
splitted = process_arg.split(':')
|
||||||
|
if len(splitted) > 1:
|
||||||
|
key = splitted[0]
|
||||||
|
value = ''.join(splitted[1:])
|
||||||
|
dictionary[key] = value
|
||||||
|
return dictionary
|
||||||
|
|
||||||
|
def determine_timew_tags(task):
|
||||||
|
'''Determine which timew "tags" should be used for the task.'''
|
||||||
|
tags = list()
|
||||||
|
|
||||||
|
# Keys associated with one value
|
||||||
|
for key in ['uuid', 'project', 'description']:
|
||||||
|
if key in task:
|
||||||
|
tags.append('{}:{}'.format(key, task[key]))
|
||||||
|
|
||||||
|
# Keys associated with several values
|
||||||
|
if 'tags' in task:
|
||||||
|
for value in task['tags']:
|
||||||
|
tags.append('tag:{}'.format(value))
|
||||||
|
|
||||||
|
return tags
|
||||||
|
|
||||||
|
def generate_timew_command(cmd, tags):
|
||||||
|
'''Generate an input for subprocess.call.'''
|
||||||
|
tags_as_string = ' '.join([shlex.quote(tag) for tag in tags])
|
||||||
|
if cmd == 'done':
|
||||||
|
cmd = 'stop'
|
||||||
|
cmd_string = f'timew {cmd} {tags_as_string} :yes'
|
||||||
|
return shlex.split(cmd_string)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
'''Main function of this module.'''
|
||||||
|
old_task = json.loads(sys.stdin.readline())
|
||||||
|
new_task = json.loads(sys.stdin.readline())
|
||||||
|
args = retrieve_args_dict()
|
||||||
|
|
||||||
|
# Do something.
|
||||||
|
feedback = None
|
||||||
|
if 'api' in args: # Only do something for known API.
|
||||||
|
if args['api'] in ['2']: # APIs that give us a 'command' key.
|
||||||
|
cmd = args['command']
|
||||||
|
if cmd in ['start', 'stop', 'done']: # Only do something on 'start', 'stop' or 'done'
|
||||||
|
timew_tags = determine_timew_tags(new_task)
|
||||||
|
timew_cmd = generate_timew_command(cmd, timew_tags)
|
||||||
|
subprocess.call(timew_cmd)
|
||||||
|
|
||||||
|
# Generate output as task expects it.
|
||||||
|
print(json.dumps(new_task))
|
||||||
|
if feedback is not None:
|
||||||
|
print(feedback)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
47
.config/task/taskrc
Normal file
47
.config/task/taskrc
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# [Created by task 2.6.2 12/23/2023 17:46:47]
|
||||||
|
# Taskwarrior program configuration file.
|
||||||
|
# For more documentation, see https://taskwarrior.org or try 'man task', 'man task-color',
|
||||||
|
# 'man task-sync' or 'man taskrc'
|
||||||
|
|
||||||
|
# Here is an example of entries that use the default, override and blank values
|
||||||
|
# variable=foo -- By specifying a value, this overrides the default
|
||||||
|
# variable= -- By specifying no value, this means no default
|
||||||
|
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
|
||||||
|
|
||||||
|
# You can also refence environment variables:
|
||||||
|
# variable=$HOME/task
|
||||||
|
# variable=$VALUE
|
||||||
|
|
||||||
|
# Use the command 'task show' to see all defaults and overrides
|
||||||
|
|
||||||
|
# data.location=/home/sahin/.task
|
||||||
|
|
||||||
|
# To use the default location of the XDG directories,
|
||||||
|
# move this configuration file from ~/.taskrc to ~/.config/task/taskrc and uncomment below
|
||||||
|
|
||||||
|
# Files
|
||||||
|
include holidays.tr-TR.rc
|
||||||
|
data.location=~/.local/share/task
|
||||||
|
hooks.location=~/.config/task/hooks
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Color theme (uncomment one to use)
|
||||||
|
include solarized-dark-256.theme
|
||||||
|
#include dark-16.theme
|
||||||
|
#include light-16.theme
|
||||||
|
#include light-256.theme
|
||||||
|
#include dark-256.theme
|
||||||
|
#include dark-red-256.theme
|
||||||
|
#include dark-green-256.theme
|
||||||
|
#include dark-blue-256.theme
|
||||||
|
#include dark-violets-256.theme
|
||||||
|
#include dark-yellow-green.theme
|
||||||
|
#include dark-gray-256.theme
|
||||||
|
#include dark-gray-blue-256.theme
|
||||||
|
#include solarized-light-256.theme
|
||||||
|
#include no-color.theme
|
||||||
|
|
||||||
|
news.version=2.6.0
|
||||||
|
#
|
||||||
|
color.calendar.holiday=black on yellow
|
Loading…
Reference in New Issue
Block a user