diff --git a/packages/techdocs-container/techdocs-core/src/core.py b/packages/techdocs-container/techdocs-core/src/core.py index ed1eb7c6f6..7d32b69ad8 100644 --- a/packages/techdocs-container/techdocs-core/src/core.py +++ b/packages/techdocs-container/techdocs-core/src/core.py @@ -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 diff --git a/packages/techdocs-container/techdocs-core/src/test_core.py b/packages/techdocs-container/techdocs-core/src/test_core.py new file mode 100644 index 0000000000..621570356c --- /dev/null +++ b/packages/techdocs-container/techdocs-core/src/test_core.py @@ -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"])