1- from pathlib import Path
21from threading import Event
32
4- from watchdog .observers import Observer
5- from watchdog .events import FileSystemEventHandler , FileSystemEvent
6-
73from ..status import find_watch_dirs
84
95from .sync import run_sync
106from .main import main
117
12-
13- class EventHandler (FileSystemEventHandler ):
14- def __init__ (self ):
15- self .update_watched ()
16-
17- def update_watched (self ):
18- self .watched = find_watch_dirs ()
19-
20- def on_any_event (self , event : FileSystemEvent ):
21- if event .event_type == "opened" :
22- return
23-
24- if isinstance (event .src_path , bytes ):
25- path = Path (event .src_path .decode ("utf-8" ))
26- else :
27- path = Path (event .src_path )
28-
29- if path .absolute ().is_relative_to (Path ("./.entangled" ).absolute ()):
30- return
31- if any (path .absolute ().is_relative_to (p .absolute ()) for p in self .watched ):
32- run_sync ()
33- # os.sync()
34- self .update_watched ()
8+ import watchfiles
359
3610
3711def _watch (_stop_event : Event | None = None , _start_event : Event | None = None ):
@@ -44,20 +18,13 @@ def stop() -> bool:
4418
4519 run_sync ()
4620
47- event_handler = EventHandler ()
48- observer = Observer ()
49- observer .schedule (event_handler , "." , recursive = True )
50- observer .start ()
51-
5221 if _start_event :
5322 _start_event .set ()
5423
55- try :
56- while observer .is_alive () and not stop ():
57- observer .join (0.1 )
58- finally :
59- observer .stop ()
60- observer .join ()
24+ dirs = "." # find_watch_dirs()
25+
26+ for changes in watchfiles .watch (dirs , stop_event = _stop_event ):
27+ run_sync ()
6128
6229
6330@main .command ()
0 commit comments