forked from tbabej/taskpirate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
on-add-pirate
executable file
·43 lines (31 loc) · 1.12 KB
/
on-add-pirate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python
import glob
import imp
import os
from tasklib import TaskWarrior, Task
def find_hooks(file_prefix):
# Find all files in subdirectories whose names start with <file_prefix>
file_pattern = os.path.dirname(__file__) + '/*/' + file_prefix + "*.py"
module_paths = [f for f in glob.glob(file_pattern) if os.path.isfile(f)]
module_paths.sort()
# 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_name = module_name.replace('.', '_')
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_add'):
hook(task)
print(task.export_data())