The goal of this release is 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).
- TODO if any other features were added post-0.7.2, add them here.
Bug Fixes:
- TODO go through post-0.7.2 commits and add bug fixes here.
Other Changes:
- TODO anything else?
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.