The goal of this release is changing to a strict Jinja2 environment, paving the way to more awesome in the future.
New Feature:
- Added support for Jinja2 extension support, thanks to @hackebrot (#617).
- Now raises an error if Cookiecutter tries to render a template that contains an undefined variable. Makes generation more robust and secure (#586). Work done by @hackebrot (#111, #586, #592)
- Uses strict Jinja2 env in prompt, thanks to @hackebrot (#598, #613)
- Switched from pyyaml/ruamel.yaml libraries that were problematic across platforms to the pure Python poyo library, thanks to @hackebrot (#557, #569, #621)
Other Changes:
- Set path before running tox, thanks to @maiksensi (#615, #620)
- Removed xfail in test_cookiecutters, thanks to @hackebrot (#618)
- Removed django-cms-plugin on account of 404 error, thanks to @mativs and @pydanny (#593)
- Fixed docs/usage.rst, thanks to @macrotim (#604)
- Update .gitignore to latest Python.gitignore and ignore PyCharm files, thanks to @audreyr
- Use open context manager to read context_file in generate() function, thanks to @hackebrot (#607, #608)
- Added documentation for choice variables, thanks to @maiksensi (#611)
- Set up Scrutinizer to check code quality, thanks to @audreyr
- Drop distutils support in setup.py, thanks to @hackebrot (#606, #609)
- Change cookiecutter-pypackage-minimal link, thanks to @kragniz (#614)
- Added more cookiecutter templates to the mix:
- cookiecutter-python by @flyondrag (#616)
- cookiecutter-pipproject by @wdm0006 (#624)
- cookiecutter-flask-2 by @wdm0006 (#624)
- cookiecutter-kotlin-gradle by @thomaslee (#622)
- cookiecutter-tryton by @cedk (#631)
- django-starter by `@tkjone`_ (#635)
Bug Fixes:
- Provided wat to define options that have no defaults, thanks to @johtso (#587, #588)
- Make sure that
replay.dump()
andreplay.load()
use the correct user config, thanks to @hackebrot (#590, #594) - Added correct CA bundle for Git on Appveyor, thanks to @maiksensi (#599, #602)
The goal of this release is to extend the user config feature and to make hook execution more robust.
New Features:
- Abort project generation if
pre_gen_project
orpost_gen_project
hook scripts fail, thanks to @eliasdorneles (#464, #549) - Extend user config capabilities with additional cli options
--config-file
and--default-config
and environment variableCOOKIECUTTER_CONFIG
, thanks to @jhermann, @pfmoore, and @hackebrot (#258, #424, #565)
Bug Fixes:
- Fixed conditional dependencies for wheels in setup.py, thanks to @hackebrot (#557, #568)
- Reverted skipif markers to use correct reasons (bug fixed in pytest), thanks to @hackebrot (#574)
Other Changes:
- Improved path and documentation for rendering the Sphinx documentation, thanks to @eliasdorneles and @hackebrot (#562, #583)
- Added additional help entrypoints, thanks to @michaeljoseph (#563, #492)
- Added Two Scoops Academy to the README, thanks to @hackebrot (#576)
- Now handling trailing slash on URL, thanks to @ramiroluz (#573, #546)
- Support for testing x86 and x86-64 architectures on appveyor, thanks to @maiksensi (#567)
- Made tests work without installing Cookiecutter, thanks to @vincentbernat (#550)
- Encoded the result of the hook template to utf8, thanks to @ionelmc (#577. #578)
- Added test for _run_hook_from_repo_dir, thanks to @hackebrot (#579, #580)
- Implemented bumpversion, thanks to @hackebrot (#582)
- Added more cookiecutter templates to the mix:
- cookiecutter-octoprint-plugin by @foosel (#560)
- wagtail-cookiecutter-foundation by @chrisdev, et al. (#566)
Zimtsterne are cinnamon star cookies
New Feature:
- Returns rendered project dir, thanks to @hackebrot (#553)
Bug Fixes:
- Factor in choice variables (as introduced in 1.1.0) when using a user config or extra context, thanks to @ionelmc and @hackebrot (#536, #542).
Other Changes:
- Enable py35 support on Travis by using Python 3.5 as base Python (@maiksensi / #540)
- If a filename is empty, do not generate. Log instead (@iljabauer / #444)
- Fix tests as per last changes in cookiecutter-pypackage, thanks to @eliasdorneles (#555).
- Removed deprecated cookiecutter-pylibrary-minimal from the list, thanks to @ionelmc (#556)
- Moved to using rualmel.yaml instead of PyYAML, except for Windows users on Python 2.7, thanks to @pydanny (#557)
Why 1.2.1 instead of 1.2.0? There was a problem in the distribution that we pushed to PyPI. Since you can't replace previous files uploaded to PyPI, we deleted the files on PyPI and released 1.2.1.
The goals of this release were copy without render and a few additional command-line options such as --overwrite-if-exists, —replay, and output-dir.
Features:
- Added copy without render feature, making it much easier for developers of Ansible, Salt Stack, and other recipe-based tools to work with Cookiecutter. Thanks to @osantana and @LucianU for their innovation, as well as @hackebrot for fixing the Windows problems (#132, #184, #425).
- Added specify output directory, thanks to @tony and @hackebrot (#531, #452).
- Abort template rendering if the project output directory already exists, thanks to @lgp171188 (#470, #471).
- Add a flag to overwrite existing output directory, thanks to @lgp171188 for the implementation (#495) and @schacki, @ionelmc, @pydanny and @hackebrot for submitting issues and code reviews (#475, #493).
- Remove test command in favor of tox, thanks to @hackebrot (#480).
- Allow cookiecutter invocation, even without installing it, via
python -m cookiecutter.cli
, thanks to @vincentbernat and @hackebrot (#449, #487). - Improve the type detection handler for online and offline repositories, thanks to @charlax (#490).
- Add replay feature, thanks to @hackebrot (#501).
- Be more precise when raising an error for an invalid user config file, thanks to @vaab and @hackebrot (#378, #528).
- Added official Python 3.5 support, thanks to @pydanny and @hackebrot (#522).
- Added support for choice variables and switch to click style prompts, thanks to @hackebrot (#441, #455).
Other Changes:
- Updated click requirement to < 6.0, thanks to @pydanny (#473).
- Added landscape.io flair, thanks to @michaeljoseph (#439).
- Descriptions of PEP8 specifications and milestone management, thanks to @michaeljoseph (#440). * Added alternate installation options in the documentation, thanks to @pydanny (#117, #315).
- The test of the which() function now tests against the date command, thanks to @vincentbernat (#446)
- Ensure file handles in setup.py are closed using with statement, thanks to @svisser (#280).
- Removed deprecated and fully extraneous compat.is_exe() function, thanks to @hackebrot (#485).
- Disabled sudo in .travis, thanks to @hackebrot (#482).
- Switched to shields.io for problematic badges, thanks to @pydanny (#491).
- Added whichcraft and removed
compat.which()
, thanks to @pydanny (#511). - Changed to export tox environment variables to codecov, thanks to @maiksensi. (#508).
- Moved to using click version command, thanks to @hackebrot (#489).
- Don't use unicode_literals to please click, thanks to @vincentbernat (#503).
- Remove warning for Python 2.6 from __init__.py, thanks to @hackebrot.
- Removed compat.py module, thanks to @hackebrot.
- Added future to requirements, thanks to @hackebrot.
- Fixed problem where expanduser does not resolve "~" correctly on windows 10 using tox, thanks to @maiksensi. (#527)
- Added more cookiecutter templates to the mix:
- cookiecutter-beamer by @luismartingil (#307)
- cookiecutter-pytest-plugin by @pytest-dev and @hackebrot (#481)
- cookiecutter-csharp-objc-binding by @SandyChapman (#460)
- cookiecutter-flask-foundation by @JackStouffer (#457)
- cookiecutter-tryton by @fulfilio (#465)
- cookiecutter-tapioca by @vintasoftware (#496)
- cookiecutter-sublime-text-3-plugin by @kkujawinski (#500)
- cookiecutter-muffin by @drgarcia1986 (#494)
- cookiecutter-django-rest by @agconti (#520)
- cookiecutter-es6-boilerplate by @agconti (#521)
- cookiecutter-tampermonkey by @christabor (#516)
- cookiecutter-wagtail by @torchbox (#533)
The goals of this release was to formally remove support for Python 2.6 and continue the move to using py.test.
Features:
- Convert the unittest suite to py.test for the sake of comprehensibility, thanks to @hackebrot (#322, #332, #334, #336, #337, #338, #340, #341, #343, #345, #347, #351, #412, #413, #414).
- Generate pytest coverage, thanks to @michaeljoseph (#326).
- Documenting of Pull Request merging and HISTORY.rst maintenance, thanks to @michaeljoseph (#330).
- Large expansions to the tutorials thanks to @hackebrot (#384)
- Switch to using Click for command-line options, thanks to @michaeljoseph (#391, #393).
- Added support for working with private repos, thanks to @marctc (#265).
- Wheel configuration thanks to @michaeljoseph (#118).
Other Changes:
- Formally removed support for 2.6, thanks to @pydanny (#201).
- Moved to codecov for continuous integration test coverage and badges, thanks to @michaeljoseph (#71, #369).
- Made JSON parsing errors easier to debug, thanks to @rsyring and @mark0978 (#355, #358, #388).
- Updated to Jinja 2.7 or higher in order to control trailing new lines in templates, thanks to @sfermigier (#356).
- Tweaked flake8 to ignore e731, thanks to @michaeljoseph (#390).
- Fixed failing Windows tests and corrected AppVeyor badge link thanks to @msabramo (#403).
- Added more Cookiecutters to the list:
The goals of this release were to add the ability to Jinja2ify the cookiecutter.json default values, and formally launch support for Python 3.4.
Features:
- Python 3.4 is now a first class citizen, thanks to everyone.
- cookiecutter.json values are now rendered Jinja2 templates, thanks to @bollwyvl (#291).
- Move to py.test, thanks to @pfmoore (#319) and @ramiroluz (#310).
- Add PendingDeprecation warning for users of Python 2.6, as support for it is gone in Python 2.7, thanks to @michaeljoseph (#201).
Bug Fixes:
- Corrected typo in Makefile, thanks to @inglesp (#297).
- Raise an exception when users don't have git or hg installed, thanks to @pydanny (#303).
Other changes:
- Creation of gitter account for logged chat, thanks to @michaeljoseph.
- Added ReadTheDocs badge, thanks to @michaeljoseph.
- Added AppVeyor badge, thanks to @pydanny
- Documentation and PyPI trove classifier updates, thanks to @thedrow (#323 and #324)
The goal of this release was to allow for injection of extra context via the Cookiecutter API, and to fix minor bugs.
Features:
- cookiecutter() now takes an optional extra_context parameter, thanks to @michaeljoseph, @fcurella, @aventurella, @emonty, @schacki, @ryanolson, @pfmoore, @pydanny, @audreyr (#260).
- Context is now injected into hooks, thanks to @michaeljoseph and @dinopetrone.
- Moved all Python 2/3 compatability code into cookiecutter.compat, making the eventual move to six easier, thanks to @michaeljoseph (#60, #102).
- Added cookiecutterrc defined aliases for cookiecutters, thanks to @pfmoore (#246)
- Added flake8 to tox to check for pep8 violations, thanks to @natim.
Bug Fixes:
- Newlines at the end of files are no longer stripped, thanks to @treyhunner (#183).
- Cloning prompt suppressed by respecting the no_input flag, thanks to @trustrachel (#285)
- With Python 3, input is no longer converted to bytes, thanks to @uranusjr (#98).
Other Changes:
- Added more Cookiecutters to the list:
The goal of this release was to fix cross-platform compatibility, primarily Windows bugs that had crept in during the addition of new features. As of this release, Windows is a first-class citizen again, now complete with continuous integration.
Bug Fixes:
- Fixed the contributing file so it displays nicely in Github, thanks to @pydanny.
- Updates 2.6 requirements to include simplejson, thanks to @saxix.
- Avoid unwanted extra spaces in string literal, thanks to @merwok.
- Fix @unittest.skipIf error on Python 2.6.
- Let sphinx parse :param: properly by inserting newlines #213, thanks to @mineo.
- Fixed Windows test prompt failure by replacing stdin per @cjrh in #195.
- Made rmtree remove readonly files, thanks to @pfmoore.
- Now using tox to run tests on Appveyor, thanks to @pfmoore (#241).
- Fixed tests that assumed the system encoding was utf-8, thanks to @pfmoore (#242, #244).
- Added a tox ini file that uses py.test, thanks to @pfmoore (#245).
Other Changes:
- @audreyr formally accepted position as BDFL of cookiecutter.
- Elevated @pydanny, @michaeljoseph, and @pfmoore to core committer status.
- Added Core Committer guide, by @audreyr.
- Generated apidocs from make docs, by @audreyr.
- Added contributing command to the make docs function, by @pydanny.
- Refactored contributing documentation, included adding core committer instructions, by @pydanny and @audreyr.
- Do not convert input prompt to bytes, thanks to @uranusjr (#192).
- Added troubleshooting info about Python 3.3 tests and tox.
- Added documentation about command line arguments, thanks to @saxix.
- Style cleanups.
- Added environment variable to disable network tests for environments without networking, thanks to @vincentbernat.
- Added Appveyor support to aid Windows integrations, thanks to @pydanny (#215).
- CONTRIBUTING.rst is now generated via make contributing, thanks to @pydanny (#220).
- Removed unnecessary endoing argument to json.load, thanks to @pfmoore (#234).
- Now generating shell hooks dynamically for Unix/Windows portability, thanks to @pfmoore (#236).
- Removed non-portable assumptions about directory structure, thanks to @pfmoore (#238).
- Added a note on portability to the hooks documentation, thanks to @pfmoore (#239).
- Replaced unicode_open with direct use of io.open, thanks to @pfmoore (#229).
- Added more Cookiecutters to the list:
Bug fixes:
- Use the current Python interpreter to run Python hooks, thanks to @coderanger.
- Include tests and documentation in source distribution, thanks to @vincentbernat.
- Fix various warnings and missing things in the docs (#129, #130), thanks to @nedbat.
- Add command line option to get version (#89), thanks to @davedash and @cyberj.
Other changes:
- Add more Cookiecutters to the list:
This is a release with significant improvements and changes. Please read through this list before you upgrade.
New features:
- Support for --checkout argument, thanks to @foobacca.
- Support for pre-generate and post-generate hooks, thanks to @raphigaziano. Hooks are Python or shell scripts that run before and/or after your project is generated.
- Support for absolute paths to cookiecutters, thanks to @krallin.
- Support for Mercurial version control system, thanks to @pokoli.
- When a cookiecutter contains invalid Jinja2 syntax, you get a better message that shows the location of the TemplateSyntaxError. Thanks to @benjixx.
- Can now prompt the user to enter values during generation from a local cookiecutter, thanks to @ThomasChiroux. This is now always the default behavior. Prompts can also be supressed with --no-input.
- Your cloned cookiecutters are stored by default in your ~/.cookiecutters/ directory (or Windows equivalent). The location is configurable. (This is a major change from the pre-0.7.0 behavior, where cloned cookiecutters were deleted at the end of project generation.) Thanks @raphigaziano.
- User config in a ~/.cookiecutterrc file, thanks to @raphigaziano. Configurable settings are cookiecutters_dir and default_context.
- File permissions are now preserved during project generation, thanks to @benjixx.
Bug fixes:
- Unicode issues with prompts and answers are fixed, thanks to @s-m-i-t-a.
- The test suite now runs on Windows, which was a major effort. Thanks to @pydanny, who collaborated on this with me.
Other changes:
- Quite a bit of refactoring and API changes.
- Lots of documentation improvements. Thanks @sloria, @alex, @pydanny, @freakboy3742, @es128, @rolo.
- Better naming and organization of test suite.
- A CookiecutterCleanSystemTestCase to use for unit tests affected by the user's config and cookiecutters directory.
- Improvements to the project's Makefile.
- Improvements to tests. Thanks @gperetin, @s-m-i-t-a.
- Removal of subprocess32 dependency. Now using non-context manager version of subprocess.Popen for Python 2 compatibility.
- Removal of cookiecutter's cleanup module.
- A bit of setup.py cleanup, thanks to @oubiga.
- Now depends on binaryornot 0.2.0.
- Windows support officially added.
- Fix TemplateNotFound Exception on Windows (#37).
- Fix copying of binary files in nested paths (#41), thanks to @sloria.
- Depend on Jinja2>=2.4 instead of Jinja2==2.7.
- Fix errors on attempt to render binary files. Copy them over from the project template without rendering.
- Fix Python 2.6/2.7 UnicodeDecodeError when values containing Unicode chars are in cookiecutter.json.
- Set encoding in Python 3 unicode_open() to always be utf-8.
- Improved project template finding. Now looks for the occurrence of {{, cookiecutter, and }} in a directory name.
- Fix help message for input_dir arg at command prompt.
- Minor edge cases found and corrected, as a result of improved test coverage.
- Config is now in a single cookiecutter.json instead of in json/.
- When you create a project from a git repo template, Cookiecutter prompts you to enter custom values for the fields defined in cookiecutter.json.
Friendlier, more simplified command line usage:
# Create project from the cookiecutter-pypackage/ template $ cookiecutter cookiecutter-pypackage/ # Create project from the cookiecutter-pypackage.git repo template $ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
Can now use Cookiecutter from Python as a package:
from cookiecutter.main import cookiecutter # Create project from the cookiecutter-pypackage/ template cookiecutter('cookiecutter-pypackage/') # Create project from the cookiecutter-pypackage.git repo template cookiecutter('https://github.com/audreyr/cookiecutter-pypackage.git')
Internal refactor to remove any code that changes the working directory.
- Only takes in one argument now: the input directory. The output directory is generated by rendering the name of the input directory.
- Output directory cannot be the same as input directory.
- Takes in command line args for the input and output directories.
- Minor cleanup.
Bumped to "Development Status :: 3 - Alpha".
- Works with any type of text file.
- Directory names and filenames can be templated.
- First release on PyPI.
https://github.com/audreyr/cookiecutter/milestones?direction=desc&sort=due_date&state=open