diff --git a/verdandi.py b/verdandi.py index 37e126d..029d750 100644 --- a/verdandi.py +++ b/verdandi.py @@ -3,6 +3,7 @@ import os import sys import SocketServer +import traceback from time import sleep from jinja2 import Environment, FileSystemLoader @@ -20,7 +21,7 @@ class DirectoryObserver(FileSystemEventHandler): def on_any_event(self, event): print "File changed: %s" % event.src_path - self._verdandi.generate_output() + self._verdandi.generate_output(False) @@ -54,6 +55,10 @@ class Verdandi(object): def collect_assets(self): + if not os.path.exists(self.output_directory): + os.mkdir(self.output_directory) + if os.listdir(self.output_directory) != []: + print "[Warn] Ouput directory is not empty" for module in self.modules: module.collect_assets(self.output_directory) @@ -66,16 +71,25 @@ class Verdandi(object): def run(self): - self.generate_output() - if len(sys.argv) > 1 and sys.argv[1] == 'serve': + self.generate_output(False) self.serve() + else: + self.generate_output() + sys.exit(0) - def generate_output(self): - self.pass_messages() - self.collect_assets() - self.render() + def generate_output(self, fail_on_exception = True): + try: + self.pass_messages() + self.collect_assets() + self.render() + except Exception: + print "[Error] I have a bad feeling about this ..." + traceback.print_exc() + if fail_on_exception: + sys.exit(1) + def serve(self): @@ -104,3 +118,4 @@ class Verdandi(object): observer.join() print "Be vigilant!" + sys.exit(0)