diff options
author | Philip Munksgaard <pmunksgaard@gmail.com> | 2014-11-05 13:43:22 +0100 |
---|---|---|
committer | Philip Munksgaard <pmunksgaard@gmail.com> | 2014-11-05 13:58:59 +0100 |
commit | 04146c934b483875bd3ecef78edee29d48a8e6d6 (patch) | |
tree | 66e2144233de6c2daa9d136185a83cb7920e5c12 | |
parent | ffae1104989c0177b483d591a482e5cd877183c2 (diff) | |
download | servo-04146c934b483875bd3ecef78edee29d48a8e6d6.tar.gz servo-04146c934b483875bd3ecef78edee29d48a8e6d6.zip |
Add serve-docs command to mach
This enables the user to run `./mach serve-docs` (with an optional port
number), starting a local web server that hosts the documentation for
Servo and Rust.
This closes #3807
-rw-r--r-- | python/servo/post_build_commands.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py index b09a3daaa15..37a4c4e3c72 100644 --- a/python/servo/post_build_commands.py +++ b/python/servo/post_build_commands.py @@ -1,7 +1,11 @@ from __future__ import print_function, unicode_literals import os.path as path +from os import chdir import subprocess +import SimpleHTTPServer +import SocketServer +from shutil import copytree, rmtree, ignore_patterns from mach.decorators import ( CommandArgument, @@ -36,3 +40,29 @@ class MachCommands(CommandBase): self.ensure_bootstrapped() return subprocess.call(["cargo", "doc"] + params, env=self.build_env()) + + @Command('serve-docs', + description='Locally serve Servo and Rust documentation', + category='post-build', + allow_all_args=True) + @CommandArgument( + 'port', default=8888, nargs='?', type=int, metavar='PORT', + help="Port to serve documentation at (default is 8888)") + def serve_docs(self, port): + self.doc([]) + servedir = path.join("target", "serve-docs") + docdir = path.join("target", "doc") + + rmtree(servedir, True) + copytree(docdir, servedir, ignore=ignore_patterns('.*')) + + rustdocs = path.join("rust", self.rust_snapshot_path(), "doc") + copytree(rustdocs, path.join(servedir, "rust"), ignore=ignore_patterns('.*')) + + chdir(servedir) + Handler = SimpleHTTPServer.SimpleHTTPRequestHandler + + httpd = SocketServer.TCPServer(("", port), Handler) + + print("serving at port", port) + httpd.serve_forever() |