mirror of
https://github.com/sahinakkaya/dotfiles.git
synced 2024-11-24 17:39:37 +01:00
Add taskwarrior config
This commit is contained in:
parent
5f9ed3af89
commit
9aaa3b9cb7
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