Linux-libre 5.3-gnu
[librecmc/linux-libre.git] / Documentation / sphinx / load_config.py
1 # -*- coding: utf-8; mode: python -*-
2 # pylint: disable=R0903, C0330, R0914, R0912, E0401
3
4 import os
5 import sys
6 from sphinx.util.pycompat import execfile_
7
8 # ------------------------------------------------------------------------------
9 def 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)