#!/usr/bin/env python ################################################################################ # # Copyright 2015 - 2016, Paul Beckingham, Federico Hernandez, liloman # 2018 Bogdan Drema # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # http://www.opensource.org/licenses/mit-license.php # ################################################################################ import sys import json import os # Hook should extract all of the following for use as Timewarrior tags: # Description and tags together # Project prefixed with pro: # Make no changes to the task, simply observe. old = json.loads(sys.stdin.readline()) new = json.loads(sys.stdin.readline()) #don't modify any output print(json.dumps(new)) #Extract attributes for use as tags. desc = u''.join(new['description']) tags = "" project = "" if 'tags' in new: #if it has the notimew tag don't track it then ;) for tag in new['tags']: if tag == "notimew": exit(0) else: tags+=" +"+u''.join(tag) if 'project' in new: project = "pro:"+u''.join(new['project']) # Started task. if 'start' in new and not 'start' in old: final_project = '"' + project+ '"' if len(project) > 0 else project os.system('timew start "'+ desc + '" ' + final_project + tags +' :yes ') # Stopped task. elif not 'start' in new and 'start' in old: os.system('timew stop ')