From b517bd162198c9c2ef0f645e1722af84475be2ce Mon Sep 17 00:00:00 2001 From: Scott Bahling Date: Sat, 23 Mar 2013 17:29:45 +0100 Subject: Add panfry serve command and pandoc-options --- panfry/main.py | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) (limited to 'panfry/main.py') diff --git a/panfry/main.py b/panfry/main.py index 100ca74..0713a8f 100755 --- a/panfry/main.py +++ b/panfry/main.py @@ -3,6 +3,9 @@ from __future__ import print_function import os import shutil +import shlex +import SimpleHTTPServer +import SocketServer import panfry.cli from panfry.templater import Templater from panfry.document import Document @@ -10,26 +13,31 @@ from panfry.document import Document def get_env(): env = panfry.cli.init_argparser().parse_args() - if not os.path.isdir(env.doc_path): - print("%s directory not found. Aborting..." % env.doc_path) - exit(1) - env.pub_path = os.path.abspath(env.pub_path) + + if env.cmd in ['gen']: + if not os.path.isdir(env.doc_path): + print("%s directory not found. Aborting..." % env.doc_path) + exit(1) + - if not env.templates_path: - env.templates_path = os.path.join(env.doc_path, 'templates') + if not env.templates_path: + env.templates_path = os.path.join(env.doc_path, 'templates') - if not os.path.isdir(env.templates_path): - print("No templates path found. Aborting...") - exit(1) + if not os.path.isdir(env.templates_path): + print("No templates path found. Aborting...") + exit(1) + + if env.pandoc_options: + env.pandoc_options = list(shlex.split(env.pandoc_options)) return env -def main(): - env = get_env() +def gen(env): document = Document(env.doc_path) document.set_templater(Templater(env.templates_path)) + document.set_pandoc_options(env.pandoc_options) if env.simple_toc: document.set_simple_toc @@ -45,6 +53,11 @@ def main(): print("done.") exit(0) + print("\nUsing pandoc options:") + for opt in env.pandoc_options: + print(" --%s" % opt) + + print() ###### Create PDF pdffile = document.publish_pdf(env.pub_path) @@ -59,5 +72,20 @@ def main(): exit(0) + +def serve(env): + os.chdir(env.pub_path) + Handler = SimpleHTTPServer.SimpleHTTPRequestHandler + + httpd = SocketServer.TCPServer(("", int(env.port)), Handler) + print("serving at port: %s" % int(env.port)) + httpd.serve_forever() + + +def main(): + CMD = dict(gen=gen, serve=serve) + env = get_env() + CMD[env.cmd](env) + if __name__ == "__main__": main() -- cgit v1.2.3