mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
auto merge of #4142 : SimonSapin/servo/refactor-doc, r=Manishearth
This commit is contained in:
commit
6d1193547b
2 changed files with 38 additions and 30 deletions
|
@ -8,14 +8,9 @@ set -e
|
|||
|
||||
cd "$(dirname $0)/../.."
|
||||
|
||||
mkdir -p components/servo/target/doc
|
||||
./mach bootstrap-rust
|
||||
# Ordered so that:
|
||||
# * etc/doc.servo.org/index.html overwrites $(mach rust-root)/doc/index.html
|
||||
# * ./mach doc overwrites $(mach rust-root)/doc/search-index.js
|
||||
cp -R $(./mach rust-root)/doc/* components/servo/target/doc/
|
||||
cp etc/doc.servo.org/* components/servo/target/doc/
|
||||
./mach doc
|
||||
# etc/doc.servo.org/index.html overwrites $(mach rust-root)/doc/index.html
|
||||
cp etc/doc.servo.org/* components/servo/target/doc/
|
||||
|
||||
ghp-import -n components/servo/target/doc
|
||||
git push -qf https://${TOKEN}@github.com/servo/doc.servo.org.git gh-pages
|
||||
|
|
|
@ -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")))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue