You can have Python or Shell scripts that run before and/or after your project is generated.
Put them in hooks/ like this:
cookiecutter-something/
├── {{cookiecutter.repo_name}}/
├── hooks
│ ├── pre_gen_project.py
│ └── post_gen_project.py
└── cookiecutter.json
Shell scripts work similarly:
cookiecutter-something/
├── {{cookiecutter.repo_name}}/
├── hooks
│ ├── pre_gen_project.sh
│ └── post_gen_project.sh
└── cookiecutter.json
It shouldn’t be too hard to extend Cookiecutter to work with other types of scripts too. Pull requests are welcome.
For portability, you should use Python scripts (with extension .py) for your hooks, as these can be run on any platform. However, if you intend for your template to only be run on a single platform, a shell script (or .bat file on Windows) can be a quicker alternative.
If you use Cookiecutter a lot, you’ll find it useful to have a .cookiecutterrc file in your home directory like this:
default_context:
full_name: "Audrey Roy"
email: "audreyr@gmail.com"
github_username: "audreyr"
cookiecutters_dir: "/home/audreyr/my-custom-cookiecutters-dir/"
Possible settings are:
You can use Cookiecutter 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')
This is useful if, for example, you’re writing a web framework and need to provide developers with a tool similar to django-admin.py startproject or npm init.
See the API Reference for more details.
show this help message and exit
Do not prompt for parameters and only use cookiecutter.json file content
branch, tag or commit to checkout after git clone
Show version information and exit.
Print debug information