"""
conttest
--------
This task uses ``conttest`` to monitor a directory for changes and executes the specified
task everytime a change is made. The following configuration is supported::
config = {
'conttest': {
'task': 'registered_task',
'directory': './directory/to/monitor/'
}
}
The ``task`` parameter is the task to be executed and must be registered in ``boltfile.py``.
The ``directory`` parameter is the directory (including sub-directories) to monitor for
changes.
To use this task, you need to have ``conttest`` installed, which you can do by calling::
pip install conttest
"""
import logging
import os
import bolt
import bolt.api as api
[docs]class ExecuteConttest(api.Task):
def _configure(self):
self.task_name = self._require('task')
self.directory = self._optional('directory', os.getcwd())
self.continue_on_error = True
logging.info('Executing continously "{task}" at {directory}'.format(task=self.task_name, directory=self.directory))
def _execute(self):
import conttest.conttest as ct
try:
ct.watch_dir(self.directory, self._execute_assigned_task, method=ct.TIMES)
except KeyboardInterrupt:
logging.info('Exiting continuous execution')
def _execute_assigned_task(self):
bolt.run_task(self.task_name, self.continue_on_error)
logging.info('Press <ctrl+c> to exit')
def register_tasks(registry):
registry.register_task('conttest', ExecuteConttest())