Upgrade projects created from a Cookiecutter template.
- Free software: MIT license
- Documentation: https://cookiecutter-project-upgrader.readthedocs.io.
Cookiecutter Project Upgrader allows upgrading projects that were created using Cookiecutter.
After a project has been created from a Cookiecutter template, changes made to the Cookiecutter template usually have to be applied manually to the project. This tool automates this process.
When run the first time on a project, it creates a new branch from the first commit of the current branch (the oldest one). It then generates the project again using the latest version of the template and creates a new commit that contains the latest cookiecuttered code,
Usage: cookiecutter_project_upgrader [OPTIONS]
Upgrade projects created from a Cookiecutter template
- Options:
-c, --context-file PATH Default: docs/cookiecutter_input.json -b, --branch TEXT Default: cookiecutter-template -u, --upgrade-branch TEXT Optional branch name of cookiecutter template to checkout before upgrading. -f, --zip-file TEXT Zip file Path/URL for Cookiecutter templates. -i, --interactive Enter interactive mode. Default behaviour: skip questions, use defaults. -m, --merge-now BOOLEAN Execute a git merge after a successful update, default: ask if interactive, otherwise false. -p, --push-template-branch-changes BOOLEAN Push changes to the remote Git branch on a successful update, default: ask if interactive, otherwise false. -e, --exclude TEXT Git pathspecs to exclude from the update commit, e.g. -e "*.py" -e "tests/". -h, --help Show this message and exit.
The tool requires a JSON file with the cookiecutter context to exist. The name of this file is specified by the --context-file parameter. This file can and should be automatically created by Cookiecutter using a file in the project template with the following contents:
{{ cookiecutter | jsonify }}
Git version 2.9 or later is required. (it needs --no-checkout on git worktree)
The script uses the Click toolkit. Because the script uses Click, you can enable completion for Zsh and Bash.
- For Bash, add the following to your .bashrc or some other profile initialization file:
- eval "$(_COOKIECUTTER_PROJECT_UPGRADER_COMPLETE=source cookiecutter_project_upgrader)"
For Zsh, please read the Click documentation.
The concept and some code is heavily based on https://github.com/senseyeio/cupper, with some changes to use Click and some flags and default values to ease usage. Also cleanup has been done and automated tests have been added.
This package was created with Cookiecutter and the thomasjahoda/cookiecutter-pypackage project template.