mirror of
https://github.com/servo/servo.git
synced 2025-06-21 15:49:04 +01:00
Have 'mach doc' copy Rust documentation.
This commit is contained in:
parent
873ca6cadd
commit
d25c66904e
2 changed files with 33 additions and 18 deletions
|
@ -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,6 +78,27 @@ 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())
|
||||
|
||||
|
@ -81,16 +110,7 @@ class MachCommands(CommandBase):
|
|||
help="Port to serve documentation at (default is 8888)")
|
||||
def serve_docs(self, port):
|
||||
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)
|
||||
chdir(path.join("components", "servo", "target", "doc"))
|
||||
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
|
||||
|
||||
httpd = SocketServer.TCPServer(("", port), Handler)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue