aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2014-12-03 16:27:56 -0700
committerbors-servo <metajack+bors@gmail.com>2014-12-03 16:27:56 -0700
commit6d1193547b3d6cb1f36edcd61ff0a2572a817bf8 (patch)
tree17e48384384386ec08af75e81c0d0d8c781ebad6 /python/servo
parent68c90e27970808bddcb8c8a4e782bd4405e67a5c (diff)
parent96c3c6fd434ac9493e9f877acfe666965b1d02cc (diff)
downloadservo-6d1193547b3d6cb1f36edcd61ff0a2572a817bf8.tar.gz
servo-6d1193547b3d6cb1f36edcd61ff0a2572a817bf8.zip
auto merge of #4142 : SimonSapin/servo/refactor-doc, r=Manishearth
Diffstat (limited to 'python/servo')
-rw-r--r--python/servo/post_build_commands.py59
1 files changed, 36 insertions, 23 deletions
diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py
index 972dea7429b..236726f4771 100644
--- a/python/servo/post_build_commands.py
+++ b/python/servo/post_build_commands.py
@@ -1,13 +1,14 @@
from __future__ import print_function, unicode_literals
import argparse
+import os
import os.path as path
from os import chdir
import subprocess
import SimpleHTTPServer
import SocketServer
import mozdebug
-from shutil import copytree, rmtree, ignore_patterns
+from shutil import copytree, rmtree, ignore_patterns, copy2
from mach.decorators import (
CommandArgument,
@@ -18,6 +19,13 @@ from mach.decorators import (
from servo.command_base import CommandBase
+def read_file(filename, if_exists=False):
+ if if_exists and not path.exists(filename):
+ return None
+ with open(filename) as f:
+ return f.read()
+
+
@CommandProvider
class MachCommands(CommandBase):
@Command('run',
@@ -70,30 +78,35 @@ class MachCommands(CommandBase):
help="Command-line arguments to be passed through to cargo doc")
def doc(self, params):
self.ensure_bootstrapped()
+
+ rust_docs = path.join(self.config["tools"]["rust-root"], "doc")
+ docs = path.join("components", "servo", "target", "doc")
+ if not path.exists(docs):
+ os.mkdir(docs)
+
+ if read_file(path.join(docs, "version_info.html"), if_exists=True) != \
+ read_file(path.join(rust_docs, "version_info.html")):
+ print("Copying Rust documentation.")
+ # copytree doesn't like the destination already existing.
+ for name in os.listdir(rust_docs):
+ if not name.startswith('.'):
+ full_name = path.join(rust_docs, name)
+ destination = path.join(docs, name)
+ if path.isdir(full_name):
+ if path.exists(destination):
+ rmtree(destination)
+ copytree(full_name, destination)
+ else:
+ copy2(full_name, destination)
+
return subprocess.call(["cargo", "doc"] + params,
env=self.build_env(), cwd=self.servo_crate())
- @Command('serve-docs',
- description='Locally serve Servo and Rust documentation',
+ @Command('browse-doc',
+ description='Generate documentation and open it in a web browser',
category='post-build')
- @CommandArgument(
- 'port', default=8888, nargs='?', type=int, metavar='PORT',
- help="Port to serve documentation at (default is 8888)")
- def serve_docs(self, port):
+ def serve_docs(self):
self.doc([])
- servedir = path.join("components", "servo", "target", "serve-docs")
- docdir = path.join("components", "servo", "target", "doc")
-
- rmtree(servedir, True)
- copytree(docdir, servedir, ignore=ignore_patterns('.*'))
-
- rustdocs = path.join(self.config["tools"]["rust-root"], "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()
+ import webbrowser
+ webbrowser.open("file://" + path.abspath(path.join(
+ "target", "doc", "servo", "index.html")))