]> git.parisson.com Git - gix.git/commitdiff
init gix
authorGuillaume Pellerin <yomguy@parisson.com>
Mon, 25 Nov 2013 01:57:06 +0000 (02:57 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Mon, 25 Nov 2013 01:57:06 +0000 (02:57 +0100)
gix.py [new file with mode: 0644]

diff --git a/gix.py b/gix.py
new file mode 100644 (file)
index 0000000..19aa920
--- /dev/null
+++ b/gix.py
@@ -0,0 +1,78 @@
+import sys
+import time
+import logging
+from threading import Thread
+
+from watchdog.observers import Observer
+from watchdog.events import LoggingEventHandler, FileSystemEventHandler
+
+from git import *
+
+logging.basicConfig(level=logging.INFO,
+                        format='%(asctime)s - %(message)s',
+                        datefmt='%Y-%m-%d %H:%M:%S')
+
+
+class GIXEventHandler(FileSystemEventHandler):
+
+    def __init__(self, git):
+        super(GIXEventHandler, self).__init__()
+        self.git = git    
+        self.message = ' '
+
+    def what(self, event):
+        return 'directory' if event.is_directory else 'file'
+
+    def log(self, action, event):
+        self.message = "%s %s: %s" % (action, self.what(event), event.src_path)
+        logging.info(self.message)
+
+    def commit(self):
+        self.git.commit(a='', m=' "' + self.message + '"')
+
+    def on_moved(self, event):
+        super(GIXEventHandler, self).on_moved(event)
+        self.log("Moved", event)
+        self.commit()
+        
+    def on_created(self, event):
+        super(GIXEventHandler, self).on_created(event)
+        self.log("Created", event)
+        self.git.add(event.src_path)
+        self.commit()
+
+    def on_deleted(self, event):
+        super(GIXEventHandler, self).on_deleted(event)
+        self.log("Deleted", event)
+        self.commit()
+        
+    def on_modified(self, event):
+        super(GIXEventHandler, self).on_modified(event)
+        self.log("Modified", event)
+        self.commit()
+        
+
+
+
+class GIX(Thread):
+
+    def __init__(self, path):
+        Thread.__init__(self)
+        self.path = path
+        self.repo = Repo(self.path)
+        self.git = self.repo.git
+        self.event_handler = GIXEventHandler(self.git)
+        self.observer = Observer()
+        self.observer.schedule(self.event_handler, path, recursive=True)
+        
+    def run(self):
+        self.observer.start()
+        self.observer.join()
+
+    def stop(self):
+        self.observer.stop()
+
+if __name__ == "__main__":
+    path = sys.argv[1] if len(sys.argv) > 1 else '.'
+    gix = GIX(path)
+    gix.start()