diff --git a/.moban.cd/changelog.yml b/.moban.cd/changelog.yml index 96184f99..0a382be2 100644 --- a/.moban.cd/changelog.yml +++ b/.moban.cd/changelog.yml @@ -1,6 +1,12 @@ name: moban organisation: moremoban releases: +- changes: + - action: Added + details: + - "`requires` shall support configuration dirs. In other words, configuration file could be stored in python package or git repository." + date: unreleased + version: 0.3.2 - changes: - action: Added details: diff --git a/.moban.cd/moban.yml b/.moban.cd/moban.yml index b4f13f0a..61bd03ae 100644 --- a/.moban.cd/moban.yml +++ b/.moban.cd/moban.yml @@ -3,8 +3,8 @@ organisation: moremoban author: C. W. contact: wangc_2011@hotmail.com license: MIT -version: 0.3.1 -current_version: 0.3.1 +version: 0.3.2 +current_version: 0.3.2 release: 0.3.1 branch: master command_line_interface: "moban" diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 98b46016..a2ae1f87 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,15 @@ Change log ================================================================================ +0.3.2 - unreleased +-------------------------------------------------------------------------------- + +Added +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. `requires` shall support configuration dirs. In other words, configuration + file could be stored in python package or git repository. + 0.3.1 - 02-11-2018 -------------------------------------------------------------------------------- diff --git a/docs/conf.py b/docs/conf.py index ce937530..36bce3db 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -30,7 +30,7 @@ # The short X.Y version version = u'0.3.1' # The full version, including alpha/beta/rc tags -release = u'0.3.1' +release = u'0.3.2' # -- General configuration --------------------------------------------------- diff --git a/docs/index.rst b/docs/index.rst index 5448e6ef..a2dc5109 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -24,6 +24,7 @@ examples folder. level-7-use-custom-jinja2-filter-test-n-global/README.rst level-8-pass-a-folder-full-of-templates/README.rst level-9-moban-dependency-as-pypi-package/README.rst + level-10-moban-dependency-as-git-repo/README.rst In pratice, the following use cases were found interesting to go along with. diff --git a/docs/level-10-moban-dependency-as-git-repo/.moban.yml b/docs/level-10-moban-dependency-as-git-repo/.moban.yml index 34bfc340..e589b3d2 100644 --- a/docs/level-10-moban-dependency-as-git-repo/.moban.yml +++ b/docs/level-10-moban-dependency-as-git-repo/.moban.yml @@ -5,6 +5,7 @@ configuration: - "pypi-mobans:templates" - local configuration: config.yml + configuration_dir: "pypi-mobans:config" targets: - mytravis.yml: travis.yml.jj2 - test.txt: demo.txt.jj2 diff --git a/docs/level-10-moban-dependency-as-git-repo/config.yml b/docs/level-10-moban-dependency-as-git-repo/config.yml index 7a525ab2..da73400d 100644 --- a/docs/level-10-moban-dependency-as-git-repo/config.yml +++ b/docs/level-10-moban-dependency-as-git-repo/config.yml @@ -1 +1,2 @@ +overrides: data.yml level10: "moban dependency as git repo" \ No newline at end of file diff --git a/docs/level-10-moban-dependency-as-git-repo/local/demo.txt.jj2 b/docs/level-10-moban-dependency-as-git-repo/local/demo.txt.jj2 index b39cb6a3..a21dd010 100644 --- a/docs/level-10-moban-dependency-as-git-repo/local/demo.txt.jj2 +++ b/docs/level-10-moban-dependency-as-git-repo/local/demo.txt.jj2 @@ -1 +1 @@ -{{level10}} \ No newline at end of file +{{name}}: {{level10}} \ No newline at end of file diff --git a/docs/level-9-moban-dependency-as-pypi-package/.moban.yml b/docs/level-9-moban-dependency-as-pypi-package/.moban.yml index 46c0c272..1e67684f 100644 --- a/docs/level-9-moban-dependency-as-pypi-package/.moban.yml +++ b/docs/level-9-moban-dependency-as-pypi-package/.moban.yml @@ -5,6 +5,7 @@ configuration: - "pypi-mobans-pkg:templates" - local configuration: config.yml + configuration_dir: "pypi-mobans-pkg:config" targets: - mytravis.yml: travis.yml.jj2 - test.txt: demo.txt.jj2 diff --git a/docs/level-9-moban-dependency-as-pypi-package/config.yml b/docs/level-9-moban-dependency-as-pypi-package/config.yml index 97ee12f9..97730934 100644 --- a/docs/level-9-moban-dependency-as-pypi-package/config.yml +++ b/docs/level-9-moban-dependency-as-pypi-package/config.yml @@ -1 +1,2 @@ +overrides: data.yml level9: "moban dependency as pypi package" diff --git a/docs/level-9-moban-dependency-as-pypi-package/local/demo.txt.jj2 b/docs/level-9-moban-dependency-as-pypi-package/local/demo.txt.jj2 index 1f57ab9b..ee50778b 100644 --- a/docs/level-9-moban-dependency-as-pypi-package/local/demo.txt.jj2 +++ b/docs/level-9-moban-dependency-as-pypi-package/local/demo.txt.jj2 @@ -1 +1 @@ -{{level9}} \ No newline at end of file +{{name}}: {{level9}} \ No newline at end of file diff --git a/moban/_version.py b/moban/_version.py index 88f30297..7e9c9817 100644 --- a/moban/_version.py +++ b/moban/_version.py @@ -1,2 +1,2 @@ -__version__ = "0.3.1" +__version__ = "0.3.2" __author__ = "C. W." diff --git a/moban/engine.py b/moban/engine.py index 7f335553..aa5a8aba 100644 --- a/moban/engine.py +++ b/moban/engine.py @@ -61,6 +61,7 @@ def __init__(self, template_dirs, context_dirs): scan_plugins_regex(MOBAN_ALL, "moban", None, BUILTIN_EXENSIONS) template_dirs = list(expand_template_directories(template_dirs)) verify_the_existence_of_directories(template_dirs) + context_dirs = expand_template_directory(context_dirs) template_loader = FileSystemLoader(template_dirs) self.jj2_environment = Environment( loader=template_loader, @@ -219,27 +220,37 @@ def expand_template_directories(dirs): dirs = [dirs] for directory in dirs: - if ":" in directory: - library_or_repo_name, relative_path = directory.split(":") - potential_repo_path = os.path.join( - utils.get_moban_home(), library_or_repo_name - ) - if os.path.exists(potential_repo_path): - # expand repo template path - if relative_path: - yield os.path.join(potential_repo_path, relative_path) - else: - yield potential_repo_path + yield expand_template_directory(directory) + + +def expand_template_directory(directory): + translated_directory = None + if ":" in directory: + library_or_repo_name, relative_path = directory.split(":") + potential_repo_path = os.path.join( + utils.get_moban_home(), library_or_repo_name + ) + if os.path.exists(potential_repo_path): + # expand repo template path + if relative_path: + translated_directory = os.path.join( + potential_repo_path, relative_path + ) else: - # expand pypi template path - library_path = LIBRARIES.resource_path_of(library_or_repo_name) - if relative_path: - yield os.path.join(library_path, relative_path) - else: - yield library_path + translated_directory = potential_repo_path else: - # local template path - yield os.path.abspath(directory) + # expand pypi template path + library_path = LIBRARIES.resource_path_of(library_or_repo_name) + if relative_path: + translated_directory = os.path.join( + library_path, relative_path + ) + else: + translated_directory = library_path + else: + # local template path + translated_directory = os.path.abspath(directory) + return translated_directory def verify_the_existence_of_directories(dirs): diff --git a/setup.py b/setup.py index 49754db7..0c48a56d 100644 --- a/setup.py +++ b/setup.py @@ -5,13 +5,15 @@ import sys import codecs from shutil import rmtree -from setuptools import setup, find_packages, Command + +from setuptools import Command, setup, find_packages + PY2 = sys.version_info[0] == 2 PY26 = PY2 and sys.version_info[1] < 7 NAME = 'moban' AUTHOR = 'C. W.' -VERSION = '0.3.1' +VERSION = '0.3.2' EMAIL = 'wangc_2011@hotmail.com' LICENSE = 'MIT' ENTRY_POINTS = { diff --git a/tests/test_docs.py b/tests/test_docs.py index 274565fb..795b3793 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -91,12 +91,12 @@ def test_level_8(self): self._raw_moban(["moban"], folder, expected, "templated-folder/my") def test_level_9(self): - expected = "moban dependency as pypi package" + expected = "pypi-mobans: moban dependency as pypi package" folder = "level-9-moban-dependency-as-pypi-package" self._raw_moban(["moban"], folder, expected, "test.txt") def test_level_10(self): - expected = "moban dependency as git repo" + expected = "pypi-mobans: moban dependency as git repo" folder = "level-10-moban-dependency-as-git-repo" self._raw_moban(["moban"], folder, expected, "test.txt")