diff -r 000000000000 -r 6474c204b198 tools/docs/mach_commands.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/docs/mach_commands.py Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,58 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, # You can obtain one at http://mozilla.org/MPL/2.0/. + +from __future__ import unicode_literals + +import os + +from mach.decorators import ( + CommandArgument, + CommandProvider, + Command, +) + +from mozbuild.base import MachCommandBase +from mozbuild.frontend.reader import BuildReader + + +@CommandProvider +class Documentation(MachCommandBase): + """Helps manage in-tree documentation.""" + + @Command('build-docs', category='build-dev', + description='Generate documentation for the tree.') + @CommandArgument('--format', default='html', + help='Documentation format to write.') + @CommandArgument('outdir', default='', nargs='?', + help='Where to write output.') + def build_docs(self, format=None, outdir=None): + self._activate_virtualenv() + self.virtualenv_manager.install_pip_package('mdn-sphinx-theme==0.4') + + from moztreedocs import SphinxManager + + if outdir == '': + outdir = os.path.join(self.topobjdir, 'docs') + + manager = SphinxManager(self.topsrcdir, os.path.join(self.topsrcdir, + 'tools', 'docs'), outdir) + + # We don't care about GYP projects, so don't process them. This makes + # scanning faster and may even prevent an exception. + def remove_gyp_dirs(sandbox): + sandbox['GYP_DIRS'][:] = [] + + reader = BuildReader(self.config_environment, + sandbox_post_eval_cb=remove_gyp_dirs) + + for sandbox in reader.walk_topsrcdir(): + for dest_dir, source_dir in sandbox['SPHINX_TREES'].items(): + manager.add_tree(os.path.join(sandbox['RELATIVEDIR'], + source_dir), dest_dir) + + for entry in sandbox['SPHINX_PYTHON_PACKAGE_DIRS']: + manager.add_python_package_dir(os.path.join(sandbox['RELATIVEDIR'], + entry)) + + return manager.generate_docs(format)