Hooks had some problems - the hook modules have to insert self
into the pipeline, but cannot decide into which (only main) and
cannot see Eval during init() (or use the logs)
Having HOOKS with explicit timing:
HOOKS="m:8:my_main_pipeline_hook t:79:cleanup_in_test_pipeline"
would be a possibility, but a little too complex.
Extension is almost the same thing as hook (sugary name change),
but can do anything during init, can insert multiple hooks
(to both main and test pipelines), read/change configuration
and use logs.
Good extension example is fetching tasks via RSYNC or GIT.
--- /dev/null
+"""
+
+Debug dummy extension.
+
+Adds several info-printing hooks to both pipelines.
+"""
+
+def init(e):
+
+ def hook_m_0:
+ e.log.info('Hey! It\'s me, the dummy extension in your main pipeline! (at time 0)')
+ e.main_pipeline.insert(hook_m_0, 'exts.dummy.hook_m_0', 0)
+
+ def hook_m_79:
+ e.log.info('Me, the dummy extension, requies no cleanup! (at time 79)')
+ e.main_pipeline.insert(hook_m_79, 'exts.dummy.hook_m_79', 79)
+
+ def hook_t_42:
+ t = 'It\'s test %s and the dummy extension did nothing! (at time 42)' % e['TEST']
+ e.log.info(t)
+ e.log.user.info(t)
+ e.test_pipeline.insert(hook_t_42, 'exts.dummy.hook_t_42', 42)