techdocs: override default mkdocs config with user config from mkdocs.yaml

This commit is contained in:
Raghunandan
2020-11-02 14:24:56 +01:00
parent 09b45677eb
commit 153670832e
2 changed files with 71 additions and 5 deletions
@@ -30,6 +30,10 @@ class TechDocsCore(BasePlugin):
'{\n "site_name": "{{ config.site_name }}",\n "site_description": "{{ config.site_description }}"\n}'
)
mdx_configs_override = {}
if "mdx_configs" in config.keys():
mdx_configs_override = config["mdx_configs"].copy()
# Theme
config["theme"] = Theme(
name="material", static_templates=["techdocs_metadata.json",],
@@ -44,15 +48,16 @@ class TechDocsCore(BasePlugin):
monorepo_plugin = MonorepoPlugin()
monorepo_plugin.load_config({})
config["plugins"]["search"] = search_plugin
config["plugins"]["monorepo"] = monorepo_plugin
search_plugin = SearchPlugin()
search_plugin.load_config({})
config["plugins"]["search"] = search_plugin
# Markdown Extensions
if "markdown_extensions" not in config.keys():
config["markdown_extensions"] = []
if "mdx_configs" not in config.keys():
config["mdx_configs"] = {}
config["markdown_extensions"].append("admonition")
config["markdown_extensions"].append("toc")
config["mdx_configs"]["toc"] = {
@@ -90,4 +95,17 @@ class TechDocsCore(BasePlugin):
config["markdown_extensions"].append("markdown_inline_graphviz")
config["markdown_extensions"].append("plantuml_markdown")
# merge or add config supplied by user in the mkdocs.yml
mdx_configs_keys = config["mdx_configs"].keys()
mdx_configs_override_keys = mdx_configs_override.keys()
for key in mdx_configs_override_keys:
if key in mdx_configs_keys:
default_config = config["mdx_configs"][key]
override_config = mdx_configs_override[key]
default_config.update(override_config)
config["mdx_configs"][key] = default_config
else:
config["mdx_configs"].append(key)
config["mdx_configs"][key] = mdx_configs_override[key]
return config
@@ -0,0 +1,48 @@
import unittest
import mkdocs.config as config
import mkdocs.plugins as plugins
from .core import TechDocsCore
class DummyTechDocsCorePlugin(plugins.BasePlugin):
pass
class TestTechDocsCoreConfig(unittest.TestCase):
def setUp(self):
self.techdocscore = TechDocsCore()
self.plugin_collection = plugins.PluginCollection()
plugin = DummyTechDocsCorePlugin()
self.plugin_collection['techdocs-core'] = plugin
self.mkdocs_yaml_config = {"plugins": self.plugin_collection}
def test_removes_techdocs_core_plugin_from_config(self):
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("techdocs-core" not in final_config["plugins"])
def test_merge_default_config_and_user_config(self):
self.mkdocs_yaml_config["markdown_extension"] = []
self.mkdocs_yaml_config["mdx_configs"] = {}
self.mkdocs_yaml_config["markdown_extension"].append(["toc"])
self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"toc_depth": 3}
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("toc" in final_config["mdx_configs"])
self.assertTrue("permalink" in final_config["mdx_configs"]["toc"])
self.assertTrue("toc_depth" in final_config["mdx_configs"]["toc"])
def test_override_default_config_with_user_config(self):
self.mkdocs_yaml_config["markdown_extension"] = []
self.mkdocs_yaml_config["mdx_configs"] = {}
self.mkdocs_yaml_config["markdown_extension"].append(["toc"])
self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"permalink": False}
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("toc" in final_config["mdx_configs"])
self.assertTrue("permalink" in final_config["mdx_configs"]["toc"])
self.assertFalse(final_config["mdx_configs"]["toc"]["permalink"])
def test_add_user_config_to_default_config(self):
self.mkdocs_yaml_config["markdown_extension"] = []
self.mkdocs_yaml_config["mdx_configs"] = {}
self.mkdocs_yaml_config["markdown_extension"].append(["abc"])
self.mkdocs_yaml_config["mdx_configs"]["abc"] = {"testkey": "testvalue"}
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("abc" in final_config["mdx_configs"])
self.assertTrue("testkey" in final_config["mdx_configs"]["abc"])