From 34b3fe8edd2a93a6e7d97c5096fdc364ad580b14 Mon Sep 17 00:00:00 2001 From: Tomas Babej Date: Tue, 7 Apr 2015 18:16:45 +0200 Subject: [PATCH 1/1] on-modify-pirate: Add pirate master hook for modify event --- on-modify-pirate | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 on-modify-pirate diff --git a/on-modify-pirate b/on-modify-pirate new file mode 100755 index 0000000..018b2ef --- /dev/null +++ b/on-modify-pirate @@ -0,0 +1,41 @@ +#!/usr/bin/python + +import glob +import imp +import os + +from tasklib.task import TaskWarrior, Task + + +def find_hooks(file_prefix): + # Find all files in subdirectories whose names start with + file_pattern = os.path.dirname(__file__) + '/*/' + file_prefix + "*.py" + module_paths = [f for f in glob.glob(file_pattern) if os.path.isfile(f)] + + # Gather all hooks in these files + hooks = [] + + for module_path in module_paths: + # Load the module + module_dir = os.path.dirname(module_path) + module_filename = os.path.basename(module_path) + module_name = 'pirate_{0}_{1}'.format(module_dir, module_filename) + module = imp.load_source(module_name, module_path) + + # Find all hook methods available + module_hooks = [ + getattr(module, hook_name) + for hook_name in dir(module) + if hook_name.startswith('hook_') + ] + + hooks += module_hooks + + return hooks + +task = Task.from_input() + +for hook in find_hooks('pirate_mod'): + hook(task) + +print task.export_data() -- 2.39.5