aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/cli.py36
-rwxr-xr-xpyblog36
2 files changed, 37 insertions, 35 deletions
diff --git a/cli/cli.py b/cli/cli.py
index 7a5c4bd0..ed2680f4 100644
--- a/cli/cli.py
+++ b/cli/cli.py
@@ -11,6 +11,8 @@ import fileinput
import time
+import signal
+
from config.config import *
from utils import utils
@@ -319,3 +321,37 @@ def gen_deploy(args):
generators.generate_blog(fresh=True)
deploy(None)
+
+
+def preview(args):
+ """Serve the blog and auto regenerate upon changes."""
+
+ # pylint: disable=unused-argument
+
+ server_process = utils.HTTPServerProcess(BUILDDIR)
+ server_process.start()
+ sys.stderr.write("watching for changes\n")
+ sys.stderr.write("send SIGINT to stop\n")
+
+ # install a SIGINT handler only for this process
+ sigint_raised = False
+
+ def sigint_mitigator(signum, frame):
+ """Translate SIGINT to setting the sigint_raised flag."""
+ nonlocal sigint_raised
+ sigint_raised = True
+
+ signal.signal(signal.SIGINT, sigint_mitigator)
+
+ # Watch and auto-regen.
+ # No need to actually implement watch separately, since
+ # generate_blog(fresh=False, report_total_errors=False) already
+ # watches for modifications and only regens upon changes, and it is
+ # completely silent when there's no change.
+ while not sigint_raised:
+ generators.generate_blog(fresh=False, report_total_errors=False)
+ time.sleep(0.5)
+
+ sys.stderr.write("\nSIGINT received, cleaning up...\n")
+ server_process.join()
+ return 0
diff --git a/pyblog b/pyblog
index 98559e50..ceb018d4 100755
--- a/pyblog
+++ b/pyblog
@@ -53,40 +53,6 @@ from generators import generators
from cli import cli
-def preview(args):
- """Serve the blog and auto regenerate upon changes."""
-
- # pylint: disable=unused-argument
-
- server_process = utils.HTTPServerProcess(BUILDDIR)
- server_process.start()
- sys.stderr.write("watching for changes\n")
- sys.stderr.write("send SIGINT to stop\n")
-
- # install a SIGINT handler only for this process
- sigint_raised = False
-
- def sigint_mitigator(signum, frame):
- """Translate SIGINT to setting the sigint_raised flag."""
- nonlocal sigint_raised
- sigint_raised = True
-
- signal.signal(signal.SIGINT, sigint_mitigator)
-
- # Watch and auto-regen.
- # No need to actually implement watch separately, since
- # generate_blog(fresh=False, report_total_errors=False) already
- # watches for modifications and only regens upon changes, and it is
- # completely silent when there's no change.
- while not sigint_raised:
- generators.generate_blog(fresh=False, report_total_errors=False)
- time.sleep(0.5)
-
- sys.stderr.write("\nSIGINT received, cleaning up...\n")
- server_process.join()
- return 0
-
-
def list_posts():
"""List all posts, with date, title, and path to source file.
@@ -315,7 +281,7 @@ def main():
parser_new_post = subparsers.add_parser(
"preview", aliases=["p", "pre"],
description="Serve the blog locally and auto regenerate upon changes.")
- parser_new_post.set_defaults(func=preview)
+ parser_new_post.set_defaults(func=cli.preview)
parser_new_post = subparsers.add_parser(
"deploy", aliases=["d", "dep"],