load_config.py (2181B)
1# -*- coding: utf-8; mode: python -*- 2# pylint: disable=R0903, C0330, R0914, R0912, E0401 3 4import os 5import sys 6from sphinx.util.pycompat import execfile_ 7 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 environment 15 ``SPHINX_CONF``. The external configuration file extends (or overwrites) the 16 configuration values from the origin ``conf.py``. With this you are able to 17 maintain *build themes*. """ 18 19 config_file = os.environ.get("SPHINX_CONF", None) 20 if (config_file is not None 21 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_documents 25 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 = True 40 fn = l[0][len(dir) + 1:] 41 new_latex_docs.append((fn, l[1], l[2], l[3], l[4])) 42 break 43 44 namespace['latex_documents'] = new_latex_docs 45 46 # If there is an extra conf.py file, load it 47 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_file 51 execfile_(config_file, config) 52 del config['__file__'] 53 namespace.update(config) 54 else: 55 config = namespace.copy() 56 config['tags'].add("subproject") 57 namespace.update(config)