Checkout one or more repos to current cookiecutter config
This will make changes to local repositories, hopefully preserving their history
Ideally only the working tree will change
Ignored files should be backed up
Use with caution
usage: repocutter [-h] [-v] [-a] [-c] PATH [REPOS [REPOS ...]]
Checkout repos to current cookiecutter config
positional arguments:
PATH path to cookiecutter template dir
REPOS repos to run cookiecutter over
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-a, --accept-hooks accept pre/post hooks
-c, --gc clean up backups from previous runs
Currently only written for a configuration exactly like below
Technically a repo would not need to be a poetry project if the below section exists within its pyproject.toml file
This is the only use case at this time (If there are any other configurations you would like added please leave an issue)
Each repository's pyproject.toml file will be parsed for data to recreate its working tree
A poetry
section in the project's pyproject.toml file that looks like the following...
[tool.poetry]
description = "Checkout repos to current cookiecutter config"
keywords = [
"config",
"cookiecutter",
"jinja2",
"repo",
"template"
]
name = "repocutter"
version = "0.2.0"
...will temporarily write to the cookiecutter
project's cookiecutter.json file until the repo is created
{
"project_name": "repocutter",
"project_version": "0.2.0",
"project_description": "Checkout repos to current cookiecutter config",
"project_keywords": "config,cookiecutter,jinja2,repo,template",
}
The above configuration will reduce the diff, but it will still work if your config is not exactly the same
As time goes on, and you use cookiecutter
for new projects, you will make more and more changes to your cookiecutter
repo
You will find these new project layouts are preferable to your older, more outdated, projects
If you have a project layout configured with cookiecutter
then it's likely you will want this layout for all your projects
Configuring your existing projects manually is even more tedious than configuring a new project manually, especially if you have a lot of them
By checking out your projects to your configured cookiecutter
layout, you can use whatever diff tool you use to rollback any undesired changes