--- a/python/mozbuild/mozbuild/mach_commands.py
+++ b/python/mozbuild/mozbuild/mach_commands.py
@@ -908,8 +908,42 @@ class MachDebug(object):
if verbose:
print('config substitutions:')
for k in sorted(config.substs):
print('\t%s: %s' % (k, config.substs[k]))
print('config defines:')
for k in sorted(config.defines):
print('\t%s' % k)
+
+
+@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='<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.3')
+
+ import sphinx
+
+ if outdir == '<DEFAULT>':
+ outdir = os.path.join(self.topobjdir, 'docs', format)
+
+ args = [
+ sys.argv[0],
+ '-b', format,
+ os.path.join(self.topsrcdir, 'build', 'docs'),
+ outdir,
+ ]
+
+ result = sphinx.main(args)
+
+ print('Docs written to %s.' % outdir)
+
+ return result