2020if TYPE_CHECKING :
2121 from watchfiles .filters import BaseFilter
2222
23- BADGE_ADD = Badge ("ADDED" , Fore .black , Back .green )
24- BADGE_DEL = Badge ("DELETED" , Fore .black , Back .red )
25- BADGE_MOD = Badge ("MODIFIED" , Fore .black , Back .blue )
23+ BADGE_ADD = Badge ("ADDED" , Fore .black , Back .green ) # type: ignore
24+ BADGE_DEL = Badge ("DELETED" , Fore .black , Back .red ) # type: ignore
25+ BADGE_MOD = Badge ("MODIFIED" , Fore .black , Back .blue ) # type: ignore
2626CHANGE_TYPE_TO_BADGE = {
2727 Change .added : BADGE_ADD ,
2828 Change .deleted : BADGE_DEL ,
@@ -59,10 +59,10 @@ async def handle_removed(src_dir: Path, dst_dir: Path, changed: Path):
5959 dst .unlink ()
6060
6161
62- async def sync (src_dir : str , dst_dir : str , filter : BaseFilter ):
62+ async def sync (src_dir : str , dst_dir : str , filter : BaseFilter , * , force_polling : bool = False ):
6363 src = Path (src_dir ).absolute ()
6464 dst = Path (dst_dir ).absolute ()
65- async for changes in awatch (src , watch_filter = filter ):
65+ async for changes in awatch (src , watch_filter = filter , force_polling = force_polling ):
6666 for change , path in changes :
6767 path = Path (path ).absolute ()
6868 print (f"{ CHANGE_TYPE_TO_BADGE [change ]} { path } " )
@@ -105,6 +105,7 @@ async def main():
105105 parser .add_argument ("sync_mapping" , metavar = "SRC_DIR:DST_DIR" , type = str , nargs = "+" , help = "Sync mapping file." )
106106 parser .add_argument ("--exclude" , type = str , help = "Exclude directories or files, separated by comma." )
107107 parser .add_argument ("-cc" , "--enable-content-caching" , action = "store_true" , help = "Enable content caching." )
108+ parser .add_argument ("--force-polling" , action = "store_true" , help = "Enable force polling." )
108109 args = parser .parse_args ()
109110 parsed_sync_mapping : list [tuple [str , str ]] = []
110111 for sync_src_with_dst in args .sync_mapping :
@@ -125,7 +126,12 @@ async def main():
125126 print (f"Starting watch { ', ' .join (f'{ src_dst [0 ]} -> { src_dst [1 ]} ' for src_dst in parsed_sync_mapping )} " )
126127 print ("Press Ctrl+C to exit." )
127128 try :
128- await asyncio .gather (* [sync (src_dir , dst_dir , combined_filter ) for src_dir , dst_dir in parsed_sync_mapping ])
129+ await asyncio .gather (
130+ * [
131+ sync (src_dir , dst_dir , combined_filter , force_polling = args .force_polling )
132+ for src_dir , dst_dir in parsed_sync_mapping
133+ ]
134+ )
129135 except asyncio .exceptions .CancelledError :
130136 print ("Bye!" )
131137
0 commit comments