1*4882a593Smuzhiyun# -*- coding: utf-8; mode: python -*- 2*4882a593Smuzhiyun# pylint: disable=R0903, C0330, R0914, R0912, E0401 3*4882a593Smuzhiyun 4*4882a593Smuzhiyunimport os 5*4882a593Smuzhiyunimport sys 6*4882a593Smuzhiyunfrom sphinx.util.pycompat import execfile_ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun# ------------------------------------------------------------------------------ 9*4882a593Smuzhiyundef loadConfig(namespace): 10*4882a593Smuzhiyun# ------------------------------------------------------------------------------ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun u"""Load an additional configuration file into *namespace*. 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun The name of the configuration file is taken from the environment 15*4882a593Smuzhiyun ``SPHINX_CONF``. The external configuration file extends (or overwrites) the 16*4882a593Smuzhiyun configuration values from the origin ``conf.py``. With this you are able to 17*4882a593Smuzhiyun maintain *build themes*. """ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun config_file = os.environ.get("SPHINX_CONF", None) 20*4882a593Smuzhiyun if (config_file is not None 21*4882a593Smuzhiyun and os.path.normpath(namespace["__file__"]) != os.path.normpath(config_file) ): 22*4882a593Smuzhiyun config_file = os.path.abspath(config_file) 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun # Let's avoid one conf.py file just due to latex_documents 25*4882a593Smuzhiyun start = config_file.find('Documentation/') 26*4882a593Smuzhiyun if start >= 0: 27*4882a593Smuzhiyun start = config_file.find('/', start + 1) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun end = config_file.rfind('/') 30*4882a593Smuzhiyun if start >= 0 and end > 0: 31*4882a593Smuzhiyun dir = config_file[start + 1:end] 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun print("source directory: %s" % dir) 34*4882a593Smuzhiyun new_latex_docs = [] 35*4882a593Smuzhiyun latex_documents = namespace['latex_documents'] 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun for l in latex_documents: 38*4882a593Smuzhiyun if l[0].find(dir + '/') == 0: 39*4882a593Smuzhiyun has = True 40*4882a593Smuzhiyun fn = l[0][len(dir) + 1:] 41*4882a593Smuzhiyun new_latex_docs.append((fn, l[1], l[2], l[3], l[4])) 42*4882a593Smuzhiyun break 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun namespace['latex_documents'] = new_latex_docs 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun # If there is an extra conf.py file, load it 47*4882a593Smuzhiyun if os.path.isfile(config_file): 48*4882a593Smuzhiyun sys.stdout.write("load additional sphinx-config: %s\n" % config_file) 49*4882a593Smuzhiyun config = namespace.copy() 50*4882a593Smuzhiyun config['__file__'] = config_file 51*4882a593Smuzhiyun execfile_(config_file, config) 52*4882a593Smuzhiyun del config['__file__'] 53*4882a593Smuzhiyun namespace.update(config) 54*4882a593Smuzhiyun else: 55*4882a593Smuzhiyun config = namespace.copy() 56*4882a593Smuzhiyun config['tags'].add("subproject") 57*4882a593Smuzhiyun namespace.update(config) 58