A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template.
Project description
A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template.
Documentation: http://cookiecutter.rtfd.org
Free software: BSD license
Features
Did someone say features? Cookiecutter’s got more features than you can shake a stick at!
Works with Python 2.6, 2.7, 3.3, and PyPy.
Simple command line usage:
# Create project from the cookiecutter-pypackage.git repo template # You'll be prompted to enter values. # Then it'll create your Python package based on those values. $ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
Can also use it at the command line with a local template:
# Create project from the local cookiecutter-pypackage/ template $ cookiecutter cookiecutter-pypackage/
Or use it from Python:
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')
Directory names and filenames can be templated. For example:
{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}.py
Supports unlimited levels of directory nesting.
All templating is done with Jinja2.
Project templates can be in any programming language or markup format: Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML, you name it. You can use multiple languages in the same project template.
Simply define your template variables in a cookiecutter.json file. For example:
{ "full_name": "Audrey Roy", "email": "audreyr@gmail.com", "project_name": "Complexity", "repo_name": "complexity", "project_short_description": "A refreshingly simple HTML-based static site generator.", "release_date": "2013-07-10", "year": "2013", "version": "0.1.1" }
If generating a project from a git repo template, you are prompted for input:
Prompts are the keys in cookiecutter.json.
Default responses are the values in cookiecutter.json.
Prompts are shown in order (thanks to those handy OrderedDicts!)
Available Templates
Here is a list of the working Cookiecutter project templates that exist:
cookiecutter-pypackage: @audreyr’s ultimate Python package project template.
cookiecutter-jquery: A jQuery plugin project template based on jQuery Boilerplate.
cookiecutter-flask : A Flask template with Bootstrap 3, starter templates, and working user registration.
cookiecutter-dj-project: A Django project template with Bootstrap 3, customizable users app, starter templates, and working user registration.
cookiecutter-dj-package: A template designed to create reusable third-party PyPI friendly Django apps. Documentation is written in tutorial format.
Make your own, then submit a pull request adding yours to this list!
Similar projects
Paste has a create option that creates a skeleton project.
Diecutter: an API service that will give you back a configuration file from a template and variables.
Django’s startproject and startapp commands can take in a –template option.
python-packager: Creates Python packages from its own template, with configurable options.
Yeoman has a Rails-inspired generator system that provides scaffolding for apps.
Pyramid’s pcreate command for creating Pyramid projects from scaffold templates.
History
0.6.3 (2013-08-20)
Fix copying of binary files in nested paths (#41), thanks to @sloria.
0.6.2 (2013-08-19)
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.
0.6.1 (2013-08-12)
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.
0.6.0 (2013-08-08)
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.
0.5 (2013-07-28)
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.
0.4 (2013-07-22)
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.
0.3 (2013-07-17)
Takes in command line args for the input and output directories.
0.2.1 (2013-07-17)
Minor cleanup.
0.2 (2013-07-17)
Bumped to “Development Status :: 3 - Alpha”.
Works with any type of text file.
Directory names and filenames can be templated.
0.1.0 (2013-07-11)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.