brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · 8b416bf Raw
60 lines · python
1# -*- coding: utf-8; mode: python -*-2# pylint: disable=R0903, C0330, R0914, R0912, E04013 4import os5import sys6from sphinx.util.osutil import fs_encoding7 8# ------------------------------------------------------------------------------9def loadConfig(namespace):10# ------------------------------------------------------------------------------11 12    u"""Load an additional configuration file into *namespace*.13 14    The name of the configuration file is taken from the environment15    ``SPHINX_CONF``. The external configuration file extends (or overwrites) the16    configuration values from the origin ``conf.py``.  With this you are able to17    maintain *build themes*.  """18 19    config_file = os.environ.get("SPHINX_CONF", None)20    if (config_file is not None21        and os.path.normpath(namespace["__file__"]) != os.path.normpath(config_file) ):22        config_file = os.path.abspath(config_file)23 24        # Let's avoid one conf.py file just due to latex_documents25        start = config_file.find('Documentation/')26        if start >= 0:27            start = config_file.find('/', start + 1)28 29        end = config_file.rfind('/')30        if start >= 0 and end > 0:31            dir = config_file[start + 1:end]32 33            print("source directory: %s" % dir)34            new_latex_docs = []35            latex_documents = namespace['latex_documents']36 37            for l in latex_documents:38                if l[0].find(dir + '/') == 0:39                    has = True40                    fn = l[0][len(dir) + 1:]41                    new_latex_docs.append((fn, l[1], l[2], l[3], l[4]))42                    break43 44            namespace['latex_documents'] = new_latex_docs45 46        # If there is an extra conf.py file, load it47        if os.path.isfile(config_file):48            sys.stdout.write("load additional sphinx-config: %s\n" % config_file)49            config = namespace.copy()50            config['__file__'] = config_file51            with open(config_file, 'rb') as f:52                code = compile(f.read(), fs_encoding, 'exec')53                exec(code, config)54            del config['__file__']55            namespace.update(config)56        else:57            config = namespace.copy()58            config['tags'].add("subproject")59            namespace.update(config)60