bl2tools/bl2tools/watcher.py
2022-04-21 13:27:51 -04:00

77 lines
1.3 KiB
Python

import os
import shlex
import subprocess
import time
from datetime import datetime
from izzylib import Path, logging
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
class SaveWatcher(Observer):
def __init__(self, server):
Observer.__init__(self)
self.server = server
self.schedule(SaveHandler(server), self.server.save_path, recursive=False)
self._running = False
def __enter__(self):
self.start()
def __exit__(self, *args):
self.stop()
def start(self):
if self._running:
return
logging.info('Starting save watcher')
Observer.start(self)
self._running = True
def stop(self):
if not self._running:
return
logging.info('Stopping save watcher')
Observer.stop(self)
self.join()
self._running = False
class SaveHandler(FileSystemEventHandler):
#patterns = [f'*.{ext}' for ext in config.watch_ext]
proc = None
last_restart = None
def __init__(self, server):
super().__init__()
self.server = server
def on_any_event(self, event):
if event.event_type not in ['modified', 'created', 'deleted']:
logging.debug(f'Ignored event: {event.event_type}')
return
path = Path(event.src_path)
if not path.suffix == 'sav':
return
self.handle_save_change(path.name, event.event_type)
def handle_save_change(self, name, event):
print(name, event)