aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpyblog40
-rw-r--r--utils/utils.py42
2 files changed, 43 insertions, 39 deletions
diff --git a/pyblog b/pyblog
index 54714e94..98559e50 100755
--- a/pyblog
+++ b/pyblog
@@ -53,50 +53,12 @@ from generators import generators
from cli import cli
-class HTTPServerProcess(multiprocessing.Process):
- """This class can be used to run an HTTP server."""
-
- def __init__(self, rootdir):
- """Initialize the HTTPServerProcess class.
-
- Parameters
- ----------
- rootdir : str
- The root directory to serve from.
-
- """
-
- super().__init__()
- self.rootdir = rootdir
-
- def run(self):
- """Create an HTTP server and serve forever.
-
- Runs on localhost. The default port is 8000; if it is not
- available, a random port is used instead.
- """
-
- os.chdir(self.rootdir)
- # pylint: disable=invalid-name
- HandlerClass = http.server.SimpleHTTPRequestHandler
- try:
- httpd = http.server.HTTPServer(("", 8001), HandlerClass)
- except OSError:
- httpd = http.server.HTTPServer(("", 0), HandlerClass)
- _, portnumber = httpd.socket.getsockname()
- sys.stderr.write("server serving on http://localhost:%d\n" % portnumber)
- try:
- httpd.serve_forever()
- except KeyboardInterrupt:
- httpd.shutdown()
-
-
def preview(args):
"""Serve the blog and auto regenerate upon changes."""
# pylint: disable=unused-argument
- server_process = HTTPServerProcess(BUILDDIR)
+ server_process = utils.HTTPServerProcess(BUILDDIR)
server_process.start()
sys.stderr.write("watching for changes\n")
sys.stderr.write("send SIGINT to stop\n")
diff --git a/utils/utils.py b/utils/utils.py
index db4bab57..1fdea5d9 100644
--- a/utils/utils.py
+++ b/utils/utils.py
@@ -14,6 +14,10 @@ import re
import lxml.etree as ET
+import http.server
+import multiprocessing
+import os
+import sys
@contextmanager
def init_colorama():
@@ -215,3 +219,41 @@ def sanitize(string):
string = re.sub(r"\s+", "-", string)
# percent encode the result
return urllib.parse.quote(string)
+
+
+class HTTPServerProcess(multiprocessing.Process):
+ """This class can be used to run an HTTP server."""
+
+ def __init__(self, rootdir):
+ """Initialize the HTTPServerProcess class.
+
+ Parameters
+ ----------
+ rootdir : str
+ The root directory to serve from.
+
+ """
+
+ super().__init__()
+ self.rootdir = rootdir
+
+ def run(self):
+ """Create an HTTP server and serve forever.
+
+ Runs on localhost. The default port is 8000; if it is not
+ available, a random port is used instead.
+ """
+
+ os.chdir(self.rootdir)
+ # pylint: disable=invalid-name
+ HandlerClass = http.server.SimpleHTTPRequestHandler
+ try:
+ httpd = http.server.HTTPServer(("", 8001), HandlerClass)
+ except OSError:
+ httpd = http.server.HTTPServer(("", 0), HandlerClass)
+ _, portnumber = httpd.socket.getsockname()
+ sys.stderr.write("server serving on http://localhost:%d\n" % portnumber)
+ try:
+ httpd.serve_forever()
+ except KeyboardInterrupt:
+ httpd.shutdown()