⌈⌋ branch:  Bitrhythm


Hex Artifact Content

Artifact b29a232af5deed55d0203a705644df66dc944cbfec746d22992d3e3a3d9a67a7:

  • File autocommit.py — part of check-in [fa4745a0a7] at 2021-11-08 06:21:09 on branch trunk — Added cue Changed Support link Working example for p5 Added dsl for tracking Added autocommit Various Fixes for Save Improve Docs and Bookmarks WebGL Demo (user: dev size: 1367)

0000: 0a 69 6d 70 6f 72 74 20 74 69 6d 65 0a 66 72 6f  .import time.fro
0010: 6d 20 77 61 74 63 68 64 6f 67 2e 6f 62 73 65 72  m watchdog.obser
0020: 76 65 72 73 20 69 6d 70 6f 72 74 20 4f 62 73 65  vers import Obse
0030: 72 76 65 72 0a 66 72 6f 6d 20 77 61 74 63 68 64  rver.from watchd
0040: 6f 67 2e 65 76 65 6e 74 73 20 69 6d 70 6f 72 74  og.events import
0050: 20 52 65 67 65 78 4d 61 74 63 68 69 6e 67 45 76   RegexMatchingEv
0060: 65 6e 74 48 61 6e 64 6c 65 72 0a 69 6d 70 6f 72  entHandler.impor
0070: 74 20 6f 73 0a 0a 64 65 66 20 6f 6e 5f 63 72 65  t os..def on_cre
0080: 61 74 65 64 28 65 76 65 6e 74 29 3a 0a 20 20 20  ated(event):.   
0090: 20 70 72 69 6e 74 28 66 22 7b 65 76 65 6e 74 2e   print(f"{event.
00a0: 73 72 63 5f 70 61 74 68 7d 20 68 61 73 20 62 65  src_path} has be
00b0: 65 6e 20 63 72 65 61 74 65 64 22 29 0a 20 20 20  en created").   
00c0: 20 6f 73 2e 73 79 73 74 65 6d 28 66 22 67 69 74   os.system(f"git
00d0: 20 61 64 64 20 7b 65 76 65 6e 74 2e 73 72 63 5f   add {event.src_
00e0: 70 61 74 68 7d 22 29 0a 20 20 20 20 6f 73 2e 73  path}").    os.s
00f0: 79 73 74 65 6d 28 66 22 67 69 74 20 63 6f 6d 6d  ystem(f"git comm
0100: 69 74 20 2d 6d 20 27 7b 65 76 65 6e 74 2e 73 72  it -m '{event.sr
0110: 63 5f 70 61 74 68 7d 20 63 72 65 61 74 65 64 27  c_path} created'
0120: 22 29 0a 0a 64 65 66 20 6f 6e 5f 64 65 6c 65 74  ")..def on_delet
0130: 65 64 28 65 76 65 6e 74 29 3a 0a 20 20 20 20 70  ed(event):.    p
0140: 72 69 6e 74 28 66 22 44 65 6c 65 74 65 20 7b 65  rint(f"Delete {e
0150: 76 65 6e 74 2e 73 72 63 5f 70 61 74 68 7d 21 22  vent.src_path}!"
0160: 29 0a 20 20 20 20 6f 73 2e 73 79 73 74 65 6d 28  ).    os.system(
0170: 66 22 67 69 74 20 63 6f 6d 6d 69 74 20 2d 6d 20  f"git commit -m 
0180: 27 7b 65 76 65 6e 74 2e 73 72 63 5f 70 61 74 68  '{event.src_path
0190: 7d 20 64 65 6c 65 74 65 64 27 22 29 0a 0a 0a 64  } deleted'")...d
01a0: 65 66 20 6f 6e 5f 6d 6f 64 69 66 69 65 64 28 65  ef on_modified(e
01b0: 76 65 6e 74 29 3a 0a 20 20 20 20 70 72 69 6e 74  vent):.    print
01c0: 28 66 22 7b 65 76 65 6e 74 2e 73 72 63 5f 70 61  (f"{event.src_pa
01d0: 74 68 7d 20 68 61 73 20 62 65 65 6e 20 6d 6f 64  th} has been mod
01e0: 69 66 69 65 64 22 29 0a 20 20 20 20 6f 73 2e 73  ified").    os.s
01f0: 79 73 74 65 6d 28 66 22 67 69 74 20 61 64 64 20  ystem(f"git add 
0200: 2e 22 29 0a 20 20 20 20 6f 73 2e 73 79 73 74 65  .").    os.syste
0210: 6d 28 66 22 67 69 74 20 63 6f 6d 6d 69 74 20 2d  m(f"git commit -
0220: 6d 20 27 7b 65 76 65 6e 74 2e 73 72 63 5f 70 61  m '{event.src_pa
0230: 74 68 7d 20 6d 6f 64 69 66 69 65 64 27 22 29 0a  th} modified'").
0240: 0a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20  .if __name__ == 
0250: 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 0a 20 20 20 20  "__main__":.    
0260: 23 20 63 72 65 61 74 65 20 74 68 65 20 65 76 65  # create the eve
0270: 6e 74 20 68 61 6e 64 6c 65 72 0a 20 20 20 20 69  nt handler.    i
0280: 67 6e 6f 72 65 5f 70 61 74 74 65 72 6e 73 20 3d  gnore_patterns =
0290: 20 5b 72 22 5e 2e 2b 2f 5c 2e 67 69 74 2e 2a 22   [r"^.+/\.git.*"
02a0: 5d 0a 20 20 20 20 69 67 6e 6f 72 65 5f 64 69 72  ].    ignore_dir
02b0: 65 63 74 6f 72 69 65 73 20 3d 20 46 61 6c 73 65  ectories = False
02c0: 0a 20 20 20 20 63 61 73 65 5f 73 65 6e 73 69 74  .    case_sensit
02d0: 69 76 65 20 3d 20 54 72 75 65 0a 20 20 20 20 6d  ive = True.    m
02e0: 79 5f 65 76 65 6e 74 5f 68 61 6e 64 6c 65 72 20  y_event_handler 
02f0: 3d 20 52 65 67 65 78 4d 61 74 63 68 69 6e 67 45  = RegexMatchingE
0300: 76 65 6e 74 48 61 6e 64 6c 65 72 28 69 67 6e 6f  ventHandler(igno
0310: 72 65 5f 72 65 67 65 78 65 73 3d 69 67 6e 6f 72  re_regexes=ignor
0320: 65 5f 70 61 74 74 65 72 6e 73 2c 20 69 67 6e 6f  e_patterns, igno
0330: 72 65 5f 64 69 72 65 63 74 6f 72 69 65 73 3d 69  re_directories=i
0340: 67 6e 6f 72 65 5f 64 69 72 65 63 74 6f 72 69 65  gnore_directorie
0350: 73 2c 20 63 61 73 65 5f 73 65 6e 73 69 74 69 76  s, case_sensitiv
0360: 65 3d 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65  e=case_sensitive
0370: 29 0a 0a 20 20 20 20 6d 79 5f 65 76 65 6e 74 5f  )..    my_event_
0380: 68 61 6e 64 6c 65 72 2e 6f 6e 5f 63 72 65 61 74  handler.on_creat
0390: 65 64 20 3d 20 6f 6e 5f 63 72 65 61 74 65 64 0a  ed = on_created.
03a0: 20 20 20 20 6d 79 5f 65 76 65 6e 74 5f 68 61 6e      my_event_han
03b0: 64 6c 65 72 2e 6f 6e 5f 64 65 6c 65 74 65 64 20  dler.on_deleted 
03c0: 3d 20 6f 6e 5f 64 65 6c 65 74 65 64 0a 20 20 20  = on_deleted.   
03d0: 20 6d 79 5f 65 76 65 6e 74 5f 68 61 6e 64 6c 65   my_event_handle
03e0: 72 2e 6f 6e 5f 6d 6f 64 69 66 69 65 64 20 3d 20  r.on_modified = 
03f0: 6f 6e 5f 6d 6f 64 69 66 69 65 64 0a 0a 20 20 20  on_modified..   
0400: 20 23 20 63 72 65 61 74 65 20 61 6e 20 6f 62 73   # create an obs
0410: 65 72 76 65 72 0a 20 20 20 20 70 61 74 68 20 3d  erver.    path =
0420: 20 22 2e 22 0a 20 20 20 20 67 6f 5f 72 65 63 75   ".".    go_recu
0430: 72 73 69 76 65 6c 79 20 3d 20 54 72 75 65 0a 20  rsively = True. 
0440: 20 20 20 6d 79 5f 6f 62 73 65 72 76 65 72 20 3d     my_observer =
0450: 20 4f 62 73 65 72 76 65 72 28 29 0a 20 20 20 20   Observer().    
0460: 6d 79 5f 6f 62 73 65 72 76 65 72 2e 73 63 68 65  my_observer.sche
0470: 64 75 6c 65 28 6d 79 5f 65 76 65 6e 74 5f 68 61  dule(my_event_ha
0480: 6e 64 6c 65 72 2c 20 70 61 74 68 2c 20 72 65 63  ndler, path, rec
0490: 75 72 73 69 76 65 3d 67 6f 5f 72 65 63 75 72 73  ursive=go_recurs
04a0: 69 76 65 6c 79 29 0a 0a 20 20 20 20 6d 79 5f 6f  ively)..    my_o
04b0: 62 73 65 72 76 65 72 2e 73 74 61 72 74 28 29 0a  bserver.start().
04c0: 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20      try:.       
04d0: 20 77 68 69 6c 65 20 54 72 75 65 3a 0a 20 20 20   while True:.   
04e0: 20 20 20 20 20 20 20 20 20 74 69 6d 65 2e 73 6c           time.sl
04f0: 65 65 70 28 35 29 0a 20 20 20 20 65 78 63 65 70  eep(5).    excep
0500: 74 3a 0a 20 20 20 20 20 20 20 20 6d 79 5f 6f 62  t:.        my_ob
0510: 73 65 72 76 65 72 2e 73 74 6f 70 28 29 0a 20 20  server.stop().  
0520: 20 20 20 20 20 20 70 72 69 6e 74 28 22 4f 62 73        print("Obs
0530: 65 72 76 65 72 20 53 74 6f 70 70 65 64 22 29 0a  erver Stopped").
0540: 20 20 20 20 6d 79 5f 6f 62 73 65 72 76 65 72 2e      my_observer.
0550: 6a 6f 69 6e 28 29 0a                             join().