Template ######## .. image:: https://git.shore.co.il/nimrod/template/badges/master/pipeline.svg :target: https://git.shore.co.il/nimrod/template/-/commits/master :alt: pipeline status .. image:: https://img.shields.io/pypi/v/template.svg :target: https://pypi.org/project/template/ :alt: Latest version on PyPI .. image:: https://img.shields.io/pypi/l/template.svg :target: http://www.gnu.org/licenses/agpl-3.0.en.html :alt: Project license .. image:: https://img.shields.io/pypi/dd/template.svg :target: https://pypistats.org/packages/template :alt: PyPI Stats A CLI tool for generating files from `Jinja2 `_ templates and environment variables. Examples -------- .. code:: shell $ template -h usage: template [-h] [-o OUTPUT] [filename] A CLI tool for generating files from Jinja2 templates and environment variables. positional arguments: filename Input filename optional arguments: -h, --help show this help message and exit -o OUTPUT, --output OUTPUT Output to filename $ export name='John' $ echo 'Hello {{ name if name is defined else 'world' }}. | template Hello John. $ echo '{{ USER }}' > username.j2 $ template --output username.txt username.j2 $ cat username.txt John Jinja filters ------------- The following Jinja filters were added: - :code:`to_yaml`: Convert to yaml. - :code:`from_yaml`: Convert from yaml. - :code:`to_json`: Convert to json. - :code:`from_json`: Convert from json. - :code:`to_toml`: Convert to toml. - :code:`from_toml`: Convert from toml. - :code:`jmespath`: Queries data using the `JMESPath `_ query language. - :code:`run`: Runs a command and returns the stdout, stderr and returncode using `run `_. Example usage can be seen in :code:`tests` and for specific filters in the docstrings in :code:`template/filters.py`. Testing ------- Tests require Pipenv_ and `Bats `_. Run the tests with the following commands: .. code:: shell pipenv run lint # Pre-commit hooks. pipenv run doctest # Doc tests. pipenv run bats # Bats tests. pipenv run check # Twine check. Also, GitLab CI is setup for this project so every push to this repository is checked with all Python 2.7, Python 3.6 and later and all supported versions of PyPy. Release ------- Release requires Pipenv_. To bump the version run :code:`pipenv run bumpversion major|minor|patch` to update the version and git commit and tag the changes, then run :code:`git push --follow-tags` to push the git commit and tag. The GitLab CI will then build and upload a release to PyPI. To manually upload to PyPI run :code:`pipenv run build` to build the Python package and :code:`pipenv run upload -s dist/*` to upload a signed version. License ------- This software is licensed under the AGPL 3+ license (see the :code:`LICENSE.txt` file). Author ------ Nimrod Adar, `contact me `_ or visit my `website `_. Patches are welcome via `git send-email `_. The repository is located at: https://git.shore.co.il/nimrod/. .. _Pipenv: https://docs.pipenv.org