54 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| # TaskWarrior hook to keep a logseq->bugwarrior task open, but taskopen it
 | |
| # so that it may directly be closed in logseq.
 | |
| 
 | |
| import json
 | |
| import os
 | |
| import sys
 | |
| import subprocess
 | |
| 
 | |
| 
 | |
| def get_task_data() -> str:
 | |
|     """
 | |
|     Gets task data from stdin.
 | |
| 
 | |
|     It might be first line on task addition and second line on task
 | |
|     modification.
 | |
| 
 | |
|     :return: str
 | |
|     """
 | |
|     input_data = sys.stdin.readlines()
 | |
| 
 | |
|     #    with open("/tmp/abracadabra", "w") as f:
 | |
|     #        f.write(input_data[-1])
 | |
| 
 | |
|     return input_data[-1]
 | |
| 
 | |
| 
 | |
| def is_from_cli() -> bool:
 | |
|     """
 | |
|     Checks for TASK_SRC being set to CLI.  If it is, then return True
 | |
|     If it isn't set, or is set to something other than cli, return False
 | |
|     """
 | |
|     try:
 | |
|         if "cli" in os.environ["TASK_SRC"]:
 | |
|             return True
 | |
|     except KeyError:
 | |
|         return False
 | |
|     return False
 | |
| 
 | |
| 
 | |
| task_data_raw = get_task_data()
 | |
| 
 | |
| task_data = json.loads(task_data_raw)
 | |
| 
 | |
| # checks if the task was added by bugwarrior (I tag them with bw) and we are
 | |
| # trying to mark it completed, AND was called from the CLI (via TASK_SRC envvar
 | |
| # being set)
 | |
| if "bw" in task_data["tags"] and task_data["status"] == "completed" and is_from_cli():
 | |
|     task_data["status"] = "pending"
 | |
|     subprocess.run(["taskopen", task_data["uuid"]], stdout=subprocess.DEVNULL)
 | |
| 
 | |
| print(json.dumps(task_data, ensure_ascii=False))
 | |
| sys.exit(0)
 |