From: Guillaume Pellerin Date: Mon, 25 Nov 2013 01:57:06 +0000 (+0100) Subject: init gix X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=49bc74a3549ce891615555636bf0d1f419f9b0de;p=gix.git init gix --- 49bc74a3549ce891615555636bf0d1f419f9b0de diff --git a/gix.py b/gix.py new file mode 100644 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()