1from __future__ import annotations
2
3import logging
4import sys
5import time
6
7from watchdog import events
8from watchdog.observers import Observer
9
10logging.basicConfig(level=logging.DEBUG)
11
12
13class MyEventHandler(events.FileSystemEventHandler):
14    def catch_all_handler(self, event: events.FileSystemEvent) -> None:
15        logging.debug(event)
16
17    def on_moved(self, event: events.DirMovedEvent | events.FileMovedEvent) -> None:
18        self.catch_all_handler(event)
19
20    def on_created(self, event: events.DirCreatedEvent | events.FileCreatedEvent) -> None:
21        self.catch_all_handler(event)
22
23    def on_deleted(self, event: events.DirDeletedEvent | events.FileDeletedEvent) -> None:
24        self.catch_all_handler(event)
25
26    def on_modified(self, event: events.DirModifiedEvent | events.FileModifiedEvent) -> None:
27        self.catch_all_handler(event)
28
29    def on_closed(self, event: events.FileClosedEvent) -> None:
30        self.catch_all_handler(event)
31
32    def on_closed_no_write(self, event: events.FileClosedNoWriteEvent) -> None:
33        self.catch_all_handler(event)
34
35    def on_opened(self, event: events.FileOpenedEvent) -> None:
36        self.catch_all_handler(event)
37
38
39path = sys.argv[1]
40
41event_handler = MyEventHandler()
42observer = Observer()
43observer.schedule(event_handler, path, recursive=True)
44observer.start()
45try:
46    while True:
47        time.sleep(1)
48finally:
49    observer.stop()
50    observer.join()
51