From 2d6a4f42259cb137988538d5f2392d4602da1c9d Mon Sep 17 00:00:00 2001 From: Juergen Bocklage-Ryannel Date: Thu, 1 Nov 2018 16:15:31 -0400 Subject: update watch code --- qface/watch.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/qface/watch.py b/qface/watch.py index 1a9ef23..e5d86ba 100644 --- a/qface/watch.py +++ b/qface/watch.py @@ -3,16 +3,18 @@ from watchdog.observers import Observer import click from path import Path import time -from .shell import sh +from subprocess import call """ Provides an API to monitor the file system """ + class RunScriptChangeHandler(FileSystemEventHandler): - def __init__(self, script): + def __init__(self, args, cwd): super().__init__() - self.script = script + self.args = args + self.cwd = cwd self.is_running = False def on_modified(self, event): @@ -24,24 +26,19 @@ class RunScriptChangeHandler(FileSystemEventHandler): if self.is_running: return self.is_running = True - sh(str(self.script), cwd=Path.getcwd()) + call(self.args, cwd=self.cwd) self.is_running = False -def monitor(script, src, dst, args): +def monitor(args, watch, cwd=Path.getcwd()): """ reloads the script given by argv when src files changes """ - src = src if isinstance(src, (list, tuple)) else [src] - dst = Path(dst).expand().abspath() - src = [Path(entry).expand().abspath() for entry in src] - command = ' '.join(args) - print('command: ', command) - event_handler = RunScriptChangeHandler(command) + watch = watch if isinstance(watch, (list, tuple)) else [watch] + watch = [Path(entry).expand().abspath() for entry in watch] + event_handler = RunScriptChangeHandler(args, cwd) observer = Observer() - click.secho('watch recursive: {0}'.format(script.dirname()), fg='blue') - observer.schedule(event_handler, script.dirname(), recursive=True) - for entry in src: + for entry in watch: if entry.isfile(): entry = entry.parent click.secho('watch recursive: {0}'.format(entry), fg='blue') -- cgit v1.2.1