Merge pull request #3199 from spotify/mkdocs-config-override
This commit is contained in:
@@ -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:
|
||||
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:
|
||||
config["markdown_extensions"] = []
|
||||
|
||||
if "mdx_configs" not in config:
|
||||
config["mdx_configs"] = {}
|
||||
|
||||
config["markdown_extensions"].append("admonition")
|
||||
config["markdown_extensions"].append("toc")
|
||||
config["mdx_configs"]["toc"] = {
|
||||
@@ -90,4 +95,11 @@ class TechDocsCore(BasePlugin):
|
||||
config["markdown_extensions"].append("markdown_inline_graphviz")
|
||||
config["markdown_extensions"].append("plantuml_markdown")
|
||||
|
||||
# merge config supplied by user in the mkdocs.yml
|
||||
for key in mdx_configs_override:
|
||||
if key in config["mdx_configs"]:
|
||||
default_config = config["mdx_configs"][key]
|
||||
override_config = mdx_configs_override[key]
|
||||
default_config.update(override_config)
|
||||
|
||||
return config
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
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"])
|
||||
Reference in New Issue
Block a user