def watch(mode, target, only_page="", pdf_file=DEFAULT_PDF_FILE,
es_upload=NO_ES_UP):
"""Look for changed files and re-run the build whenever there's an update.
Runs until interrupted."""
target = get_target(target)
class UpdaterHandler(PatternMatchingEventHandler):
"""Updates to pattern-matched files means rendering."""
def on_any_event(self, event):
logger.info("got event!")
# bypass_errors=True because Watch shouldn't
# just die if a file is temporarily not found
if mode == "pdf":
make_pdf(pdf_file, target=target, bypass_errors=True,
only_page=only_page, es_upload=es_upload)
else:
render_pages(target, mode=mode, bypass_errors=True,
only_page=only_page, es_upload=es_upload)
logger.info("done rendering")
patterns = ["*template-*.html",
"*.md",
"*code_samples/*"]
event_handler = UpdaterHandler(patterns=patterns)
observer = Observer()
observer.schedule(event_handler, config["template_path"], recursive=True)
observer.schedule(event_handler, config["content_path"], recursive=True)
observer.start()
# The above starts an observing thread,
# so the main thread can just wait
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
评论列表
文章目录