aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfauxpark <fauxpark@gmail.com>2019-10-09 05:06:26 +1100
committerDrashna Jaelre <drashna@live.com>2019-10-08 11:06:26 -0700
commit2707652c9877e5fc7dd67670f8e14962c31baf42 (patch)
treefe59684ab5a80ed51bb14c5b465254c24935d194
parente7d95701bf12998a61c5d2143891b24939ebbe52 (diff)
downloadqmk_firmware-2707652c9877e5fc7dd67670f8e14962c31baf42.tar.gz
qmk_firmware-2707652c9877e5fc7dd67670f8e14962c31baf42.zip
[Docs] CLI command to serve docs locally (#6956)
* CLI command to serve docs locally * Document it * Default port * Use `with` and subclass `SimpleHTTPRequestHandler` to set working dir * Apply suggestions from code review Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com> * Update docs/cli.md
-rw-r--r--docs/cli.md10
-rw-r--r--lib/python/qmk/cli/__init__.py1
-rw-r--r--lib/python/qmk/cli/docs.py22
3 files changed, 33 insertions, 0 deletions
diff --git a/docs/cli.md b/docs/cli.md
index 6ffe03365..d150ee917 100644
--- a/docs/cli.md
+++ b/docs/cli.md
@@ -105,6 +105,16 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
105qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN] 105qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
106``` 106```
107 107
108## `qmk docs`
109
110This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
111
112**Usage**:
113
114```
115qmk docs [-p PORT]
116```
117
108## `qmk doctor` 118## `qmk doctor`
109 119
110This command examines your environment and alerts you to potential build or flash problems. 120This command examines your environment and alerts you to potential build or flash problems.
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index e982a75fc..e41cc3dcb 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -5,6 +5,7 @@ We list each subcommand here explicitly because all the reliable ways of searchi
5from . import cformat 5from . import cformat
6from . import compile 6from . import compile
7from . import config 7from . import config
8from . import docs
8from . import doctor 9from . import doctor
9from . import hello 10from . import hello
10from . import json 11from . import json
diff --git a/lib/python/qmk/cli/docs.py b/lib/python/qmk/cli/docs.py
new file mode 100644
index 000000000..a0888ec38
--- /dev/null
+++ b/lib/python/qmk/cli/docs.py
@@ -0,0 +1,22 @@
1"""Serve QMK documentation locally
2"""
3import http.server
4
5from milc import cli
6
7
8class DocsHandler(http.server.SimpleHTTPRequestHandler):
9 def __init__(self, *args, **kwargs):
10 super().__init__(*args, directory='docs', **kwargs)
11
12
13@cli.argument('-p', '--port', default=8936, type=int, help='Port number to use.')
14@cli.subcommand('Run a local webserver for QMK documentation.')
15def docs(cli):
16 """Spin up a local HTTPServer instance for the QMK docs.
17 """
18 with http.server.HTTPServer(('', cli.config.docs.port), DocsHandler) as httpd:
19 cli.log.info("Serving QMK docs at http://localhost:%d/", cli.config.docs.port)
20 cli.log.info("Press Control+C to exit.")
21
22 httpd.serve_forever()