##// END OF EJS Templates
docstrings
docstrings

File last commit:

r11807:5ee93c08
r11848:b1c1b68b
Show More
serve.py
58 lines | 2.1 KiB | text/x-python | PythonLexer
"""
Contains postprocessor for serving nbconvert output.
"""
#-----------------------------------------------------------------------------
#Copyright (c) 2013, the IPython Development Team.
#
#Distributed under the terms of the Modified BSD License.
#
#The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import os
import webbrowser
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
from IPython.utils.traitlets import Unicode, Bool
from .base import PostProcessorBase
#-----------------------------------------------------------------------------
# Classes
#-----------------------------------------------------------------------------
class ServePostProcessor(PostProcessorBase):
"""Post processor designed to serve files"""
build_directory = Unicode(".", config=True,
help="""Directory to write output to. Leave blank
to output to the current directory""")
open_in_browser = Bool(True, config=True,
help="""Set to False to deactivate
the opening of the browser""")
def call(self, input):
"""
Simple implementation to serve the build directory.
"""
try:
os.chdir(self.build_directory)
httpd = HTTPServer(('127.0.0.1', 8000), SimpleHTTPRequestHandler)
sa = httpd.socket.getsockname()
name = input[2:]
url = "http://" + sa[0] + ":" + str(sa[1]) + "/" + name
if self.open_in_browser:
webbrowser.open(url, new=2)
print("Serving " + name + " on " + url)
print("Use Control-C to stop this server.")
httpd.serve_forever()
except KeyboardInterrupt:
print("The server is shut down.")