162306a36Sopenharmony_ci# -*- coding: utf-8; mode: python -*- 262306a36Sopenharmony_ci# pylint: disable=R0903, C0330, R0914, R0912, E0401 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciimport os 562306a36Sopenharmony_ciimport sys 662306a36Sopenharmony_cifrom sphinx.util.osutil import fs_encoding 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci# ------------------------------------------------------------------------------ 962306a36Sopenharmony_cidef loadConfig(namespace): 1062306a36Sopenharmony_ci# ------------------------------------------------------------------------------ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci u"""Load an additional configuration file into *namespace*. 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci The name of the configuration file is taken from the environment 1562306a36Sopenharmony_ci ``SPHINX_CONF``. The external configuration file extends (or overwrites) the 1662306a36Sopenharmony_ci configuration values from the origin ``conf.py``. With this you are able to 1762306a36Sopenharmony_ci maintain *build themes*. """ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci config_file = os.environ.get("SPHINX_CONF", None) 2062306a36Sopenharmony_ci if (config_file is not None 2162306a36Sopenharmony_ci and os.path.normpath(namespace["__file__"]) != os.path.normpath(config_file) ): 2262306a36Sopenharmony_ci config_file = os.path.abspath(config_file) 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci # Let's avoid one conf.py file just due to latex_documents 2562306a36Sopenharmony_ci start = config_file.find('Documentation/') 2662306a36Sopenharmony_ci if start >= 0: 2762306a36Sopenharmony_ci start = config_file.find('/', start + 1) 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci end = config_file.rfind('/') 3062306a36Sopenharmony_ci if start >= 0 and end > 0: 3162306a36Sopenharmony_ci dir = config_file[start + 1:end] 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci print("source directory: %s" % dir) 3462306a36Sopenharmony_ci new_latex_docs = [] 3562306a36Sopenharmony_ci latex_documents = namespace['latex_documents'] 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci for l in latex_documents: 3862306a36Sopenharmony_ci if l[0].find(dir + '/') == 0: 3962306a36Sopenharmony_ci has = True 4062306a36Sopenharmony_ci fn = l[0][len(dir) + 1:] 4162306a36Sopenharmony_ci new_latex_docs.append((fn, l[1], l[2], l[3], l[4])) 4262306a36Sopenharmony_ci break 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci namespace['latex_documents'] = new_latex_docs 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci # If there is an extra conf.py file, load it 4762306a36Sopenharmony_ci if os.path.isfile(config_file): 4862306a36Sopenharmony_ci sys.stdout.write("load additional sphinx-config: %s\n" % config_file) 4962306a36Sopenharmony_ci config = namespace.copy() 5062306a36Sopenharmony_ci config['__file__'] = config_file 5162306a36Sopenharmony_ci with open(config_file, 'rb') as f: 5262306a36Sopenharmony_ci code = compile(f.read(), fs_encoding, 'exec') 5362306a36Sopenharmony_ci exec(code, config) 5462306a36Sopenharmony_ci del config['__file__'] 5562306a36Sopenharmony_ci namespace.update(config) 5662306a36Sopenharmony_ci else: 5762306a36Sopenharmony_ci config = namespace.copy() 5862306a36Sopenharmony_ci config['tags'].add("subproject") 5962306a36Sopenharmony_ci namespace.update(config) 60