def setup(app): app.add_directive('mozbuildsymbols', MozbuildSymbols) # Unlike typical Sphinx installs, our documentation is assembled from # many sources and staged in a common location. This arguably isn't a best # practice, but it was the easiest to implement at the time. # # Here, we invoke our custom code for staging/generating all our # documentation. from moztreedocs import SphinxManager topsrcdir = app.config._raw_config['topsrcdir'] manager = SphinxManager(topsrcdir, os.path.join(topsrcdir, 'tools', 'docs'), app.outdir) manager.generate_docs(app) app.srcdir = os.path.join(app.outdir, '_staging') # We need to adjust sys.path in order for Python API docs to get generated # properly. We leverage the in-tree virtualenv for this. from mozbuild.virtualenv import VirtualenvManager ve = VirtualenvManager( topsrcdir, os.path.join(topsrcdir, 'dummy-objdir'), os.path.join(app.outdir, '_venv'), sys.stderr, os.path.join(topsrcdir, 'build', 'virtualenv_packages.txt')) ve.ensure() ve.activate()
def setup(app): app.add_directive('mozbuildsymbols', MozbuildSymbols) # Unlike typical Sphinx installs, our documentation is assembled from # many sources and staged in a common location. This arguably isn't a best # practice, but it was the easiest to implement at the time. # # Here, we invoke our custom code for staging/generating all our # documentation. from moztreedocs import SphinxManager topsrcdir = app.config._raw_config['topsrcdir'] manager = SphinxManager(topsrcdir, os.path.join(topsrcdir, 'tools', 'docs'), app.outdir) manager.generate_docs(app) app.srcdir = os.path.join(app.outdir, '_staging') # We need to adjust sys.path in order for Python API docs to get generated # properly. We leverage the in-tree virtualenv for this. from mozbuild.virtualenv import VirtualenvManager ve = VirtualenvManager(topsrcdir, os.path.join(topsrcdir, 'dummy-objdir'), os.path.join(app.outdir, '_venv'), sys.stderr, os.path.join(topsrcdir, 'build', 'virtualenv_packages.txt')) ve.ensure() ve.activate()
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 == '<DEFAULT>': 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)
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 == '<DEFAULT>': 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(context): context['GYP_DIRS'][:] = [] reader = BuildReader(self.config_environment, sandbox_post_eval_cb=remove_gyp_dirs) for context in reader.walk_topsrcdir(): for dest_dir, source_dir in context['SPHINX_TREES'].items(): manager.add_tree(os.path.join(context.relsrcdir, source_dir), dest_dir) for entry in context['SPHINX_PYTHON_PACKAGE_DIRS']: manager.add_python_package_dir(os.path.join(context.relsrcdir, entry)) return manager.generate_docs(format)
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 == '<DEFAULT>': 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(context): context['GYP_DIRS'][:] = [] reader = BuildReader(self.config_environment, sandbox_post_eval_cb=remove_gyp_dirs) for path, name, key, value in reader.find_sphinx_variables(): reldir = os.path.dirname(path) if name == 'SPHINX_TREES': assert key manager.add_tree(os.path.join(reldir, value), os.path.join(reldir, key)) if name == 'SPHINX_PYTHON_PACKAGE_DIRS': manager.add_python_package_dir(os.path.join(reldir, value)) return manager.generate_docs(format)
def build_docs(self, format=None, outdir=None): self._activate_virtualenv() self.virtualenv_manager.install_pip_package('sphinx_rtd_theme==0.1.6') from moztreedocs import SphinxManager if outdir == '<DEFAULT>': 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(context): context['GYP_DIRS'][:] = [] # Reading the Sphinx variables doesn't require a full build context. # Only define the parts we need. class fakeconfig(object): def __init__(self, topsrcdir): self.topsrcdir = topsrcdir config = fakeconfig(self.topsrcdir) reader = BuildReader(config) for path, name, key, value in reader.find_sphinx_variables(): reldir = os.path.dirname(path) if name == 'SPHINX_TREES': assert key manager.add_tree(os.path.join(reldir, value), os.path.join(reldir, key)) if name == 'SPHINX_PYTHON_PACKAGE_DIRS': manager.add_python_package_dir(os.path.join(reldir, value)) return manager.generate_docs(format)
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 == '<DEFAULT>': outdir = os.path.join(self.topobjdir, 'docs') manager = SphinxManager(self.topsrcdir, os.path.join(self.topsrcdir, 'tools', 'docs'), outdir) reader = BuildReader(self.config_environment) 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)