diff options
Diffstat (limited to 'tools/edit_monitor/edit_monitor.py')
| -rw-r--r-- | tools/edit_monitor/edit_monitor.py | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/tools/edit_monitor/edit_monitor.py b/tools/edit_monitor/edit_monitor.py index ab528e870f..3a3db332ad 100644 --- a/tools/edit_monitor/edit_monitor.py +++ b/tools/edit_monitor/edit_monitor.py @@ -46,7 +46,6 @@ class ClearcutEventHandler(PatternMatchingEventHandler): is_dry_run: bool = False, cclient: clearcut_client.Clearcut | None = None, ): - super().__init__(patterns=["*"], ignore_directories=True) self.root_monitoring_path = path self.flush_interval_sec = flush_interval_sec @@ -74,6 +73,10 @@ class ClearcutEventHandler(PatternMatchingEventHandler): def on_modified(self, event: FileSystemEvent): self._log_edit_event(event, edit_event_pb2.EditEvent.MODIFY) + def dispatch(self, event: FileSystemEvent) -> None: + if event.event_type in ("moved", "created", "deleted", "modified"): + super().dispatch(event) + def flushall(self): logging.info("flushing all pending events.") if self._scheduled_log_thread: @@ -110,7 +113,7 @@ class ClearcutEventHandler(PatternMatchingEventHandler): ) event_proto.single_edit_event.CopyFrom( edit_event_pb2.EditEvent.SingleEditEvent( - file_path=event.src_path, edit_type=edit_type + edit_type=edit_type ) ) with self._pending_events_lock: @@ -199,11 +202,26 @@ def start( conn: the sender of the pipe to communicate with the deamon manager. """ event_handler = ClearcutEventHandler( - path, flush_interval_sec, single_events_size_threshold, is_dry_run, cclient) + path, + flush_interval_sec, + single_events_size_threshold, + is_dry_run, + cclient, + ) observer = Observer() - logging.info("Starting observer on path %s.", path) - observer.schedule(event_handler, path, recursive=True) + out_dir = os.environ.get("OUT_DIR", "out") + sub_dirs = [ + os.path.join(path, name) + for name in os.listdir(path) + if name != out_dir + and not name.startswith(".") + and os.path.isdir(os.path.join(path, name)) + ] + for sub_dir_name in sub_dirs: + logging.info("Starting observer on path %s.", sub_dir_name) + observer.schedule(event_handler, sub_dir_name, recursive=True) + observer.start() logging.info("Observer started.") if pipe_sender: |
