import logging from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler import time import os from .config import SOURCE_DIRECTORY logger = logging.getLogger("stsg") def build(): print("building") class CustomFileSystemEventHandler(FileSystemEventHandler): def on_modified(self, event): if event.is_directory: return filename = os.path.basename(event.src_path) if filename.startswith('.') or filename.endswith(('~', '.tmp', '.swp')): return logger.info("%s changed, building", event.src_path) build() def build_on_change(): print("build on change") build() observer = Observer() observer.schedule(CustomFileSystemEventHandler(), path=SOURCE_DIRECTORY, recursive=True) observer.start() try: while True: time.sleep(1) # Keeps the thread alive except KeyboardInterrupt: observer.stop() observer.join()