diff --git a/__tests__/integration/fixtures/error-include-path-site-name-contains-space/docs/index.md b/__tests__/integration/fixtures/ok-include-path-site-name-contains-space/docs/index.md similarity index 100% rename from __tests__/integration/fixtures/error-include-path-site-name-contains-space/docs/index.md rename to __tests__/integration/fixtures/ok-include-path-site-name-contains-space/docs/index.md diff --git a/__tests__/integration/fixtures/error-include-path-site-name-contains-space/mkdocs.yml b/__tests__/integration/fixtures/ok-include-path-site-name-contains-space/mkdocs.yml similarity index 100% rename from __tests__/integration/fixtures/error-include-path-site-name-contains-space/mkdocs.yml rename to __tests__/integration/fixtures/ok-include-path-site-name-contains-space/mkdocs.yml diff --git a/__tests__/integration/fixtures/error-include-path-site-name-contains-space/project-a/docs/README.md b/__tests__/integration/fixtures/ok-include-path-site-name-contains-space/project-a/docs/README.md similarity index 100% rename from __tests__/integration/fixtures/error-include-path-site-name-contains-space/project-a/docs/README.md rename to __tests__/integration/fixtures/ok-include-path-site-name-contains-space/project-a/docs/README.md diff --git a/__tests__/integration/fixtures/error-include-path-site-name-contains-space/project-a/mkdocs.yml b/__tests__/integration/fixtures/ok-include-path-site-name-contains-space/project-a/mkdocs.yml similarity index 100% rename from __tests__/integration/fixtures/error-include-path-site-name-contains-space/project-a/mkdocs.yml rename to __tests__/integration/fixtures/ok-include-path-site-name-contains-space/project-a/mkdocs.yml diff --git a/__tests__/integration/test.bats b/__tests__/integration/test.bats index 4a5cd33..1a9d0a1 100644 --- a/__tests__/integration/test.bats +++ b/__tests__/integration/test.bats @@ -144,6 +144,11 @@ teardown() { [[ "$output" == *"This contains a sentence which only exists in the ok-mkdocs-git-revision-date-localized-plugin/project-a fixture."* ]] } +@test "builds a mkdocs even if !include path has site_name containing spaces" { + cd ${fixturesDir}/ok-include-path-site-name-contains-space + assertSuccessMkdocs build +} + @test "fails if !include path is above current folder" { cd ${fixturesDir}/error-include-path-is-parent assertFailedMkdocs build @@ -156,12 +161,6 @@ teardown() { [[ "$output" == *"[mkdocs-monorepo] We currently do not support nested !include statements inside of Mkdocs."* ]] } -@test "fails if !include path has site_name containing spaces" { - cd ${fixturesDir}/error-include-path-site-name-contains-space - assertFailedMkdocs build - [[ "$output" == *"[mkdocs-monorepo] Site name can only contain letters, numbers, underscores, hyphens and forward-slashes. The regular expression we test against is '^[a-zA-Z0-9_\-/]+$'."* ]] -} - @test "fails if !include paths contains duplicate site_name values" { cd ${fixturesDir}/error-include-paths-duplicate-site-name assertFailedMkdocs build diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 652d448..dd555dd 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.4.18 + +- Allow inclusion of sub-docs `mkdocs.yml` even if its name isn't URL-friendly. + Works by slugifying non-URL friendly names. (#58) + ## 0.4.17 - Fixed bug where URLs in an included `mkdocs.yml` were prefixed by the `site_name` and thus did not support absolute URLs. diff --git a/docs/limitations.md b/docs/limitations.md index b53d44d..d347808 100644 --- a/docs/limitations.md +++ b/docs/limitations.md @@ -1,4 +1,3 @@ # Caveats / Known Design Decisions - In an included `mkdocs.yml`, you cannot have `!include`. It is only supported in the root `mkdocs.yml` -- In an included `mkdocs.yml`, your `site_name` must adhere follow the regular expression: `^[a-zA-Z0-9_\-/]+$` diff --git a/mkdocs_monorepo_plugin/parser.py b/mkdocs_monorepo_plugin/parser.py index 693f4fd..cae557f 100644 --- a/mkdocs_monorepo_plugin/parser.py +++ b/mkdocs_monorepo_plugin/parser.py @@ -17,6 +17,7 @@ import copy import re +from slugify import slugify from mkdocs.utils import yaml_load, warning_filter, dirname_to_title, get_markdown_title from urllib.parse import urlsplit log = logging.getLogger(__name__) @@ -210,10 +211,7 @@ def getAlias(self): regex = '^[a-zA-Z0-9_\-/]+$' # noqa: W605 if re.match(regex, alias) is None: - log.critical( - "[mkdocs-monorepo] Site name can only contain letters, numbers, underscores, hyphens and forward-slashes. " + - "The regular expression we test against is '{}'.".format(regex)) - raise SystemExit(1) + alias = slugify(self.navYaml["site_name"]) return alias diff --git a/requirements.txt b/requirements.txt index f14d9d8..4136355 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,3 +3,4 @@ mkdocs>=1.1.1 mkdocs-material>=5.1.0 mkdocs-git-authors-plugin==0.3.2 mkdocs-git-revision-date-localized-plugin==0.5.0 +python-slugify==4.0.1 diff --git a/setup.py b/setup.py index 1cd881c..3bb365e 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setuptools.setup( name='mkdocs-monorepo-plugin', - version='0.4.17', + version='0.4.18', description='Plugin for adding monorepository support in Mkdocs.', long_description=""" This introduces support for the !include syntax in mkdocs.yml, allowing you to import additional Mkdocs navigation.