Skip to content

Commit

Permalink
Migrated from inotify to watchdog
Browse files Browse the repository at this point in the history
  • Loading branch information
LongHairedHacker committed Nov 11, 2016
1 parent a0ebf84 commit c868d2f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 22 deletions.
1 change: 0 additions & 1 deletion requirements.txt
@@ -1,5 +1,4 @@
argh==0.26.1
inotify==0.2.4
Jinja2==2.7.3
Markdown==2.6
MarkupSafe==0.23
Expand Down
50 changes: 29 additions & 21 deletions verdandi.py
Expand Up @@ -3,14 +3,27 @@
import os
import sys
import SocketServer
import inotify.adapters

from time import sleep
from jinja2 import Environment, FileSystemLoader
from SimpleHTTPServer import SimpleHTTPRequestHandler
from multiprocessing import Process
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

from constants import CONTENT_DIRECTORY, OUTPUT_DIRECTORY, TEMPLATE_DIRECTORY, SERVE_PORT, SERVE_BIND_ADDRESS


class DirectoryObserver(FileSystemEventHandler):
def __init__(self, verdandi):
self._verdandi = verdandi

def on_any_event(self, event):
print "File changed: %s" % event.src_path
self._verdandi.generate_output()



class Verdandi(object):

output_directory = OUTPUT_DIRECTORY
Expand Down Expand Up @@ -64,33 +77,28 @@ def generate_output(self):


def serve(self):

def has_create_or_modify(watch):
result = False
for event in watch.event_gen():
if event == None:
break

result = result or ('IN_CREATE' in event[1])
result = result or ('IN_DELETE' in event[1])
result = result or ('IN_MODIFY' in event[1])

return result

content_watch = inotify.adapters.InotifyTree(CONTENT_DIRECTORY)
template_watch = inotify.adapters.InotifyTree(TEMPLATE_DIRECTORY)


def serve():
os.chdir(self.output_directory)
httpd = SocketServer.TCPServer((SERVE_BIND_ADDRESS, SERVE_PORT), SimpleHTTPRequestHandler)
print "Serving under %s:%d" % (SERVE_BIND_ADDRESS, SERVE_PORT)
httpd.serve_forever()


event_handler = DirectoryObserver(self)
observer = Observer()
observer.schedule(event_handler, CONTENT_DIRECTORY, recursive=True)
observer.schedule(event_handler, TEMPLATE_DIRECTORY, recursive=True)
observer.start()

server_process = Process(target=serve)
server_process.start()

while True:
if has_create_or_modify(content_watch) or has_create_or_modify(template_watch):
self.generate_output()
try:
server_process.join()
except KeyboardInterrupt:
pass

observer.stop()
observer.join()

print "Be vigilant!"

0 comments on commit c868d2f

Please sign in to comment.