Source code for govlabstatic.watcher

import time

from staticjinja.reloader import Reloader
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class StaticjinjaReloaderEventHandler(FileSystemEventHandler):
    def __init__(self, reloader):
        FileSystemEventHandler.__init__(self)
        self.reloader = reloader

    def on_any_event(self, event):
        self.reloader.event_handler(event.event_type, event.src_path)

[docs]class Watcher(object): ''' Encapsulates the watching of directories and files and taking actions when they change. ''' def __init__(self): #: A :py:class:`watchdog.observers.api.BaseObserver` instance. #: Feel free to schedule the watching of new paths and #: reacting to changes in them as needed. self.observer = Observer() def add_site(self, site): reloader = Reloader(site) self.observer.schedule(StaticjinjaReloaderEventHandler(reloader), reloader.searchpath, recursive=True) def run(self): self.observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: self.observer.stop() self.observer.join()