You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Major version mismatch warning. If your Copier version is too new, you'll be warned.
Specific exceptions, which will help on error detection for API usages.
Multiline questions.
Conditional questions.
Placeholders.
Interactive TUI for questionaries. Prompts are way cooler now. 😎
Python 3.9 support.
Python 3.10 support.
Support empty templates suffix, telling Copier to render every file.
Added --defaults flag to use default answers to questions, which might be null if
not specified.
Added --overwrite flag to overwrite files that already exist, without asking.
In migration scripts, we have the new environment variables $VERSION_PEP440_FROM, $VERSION_PEP440_CURRENT and $VERSION_PEP440_TO, which will always get a valid
PEP440 version identifier, without the v prefix, allowing your migration scripts
to have a valid standard where to base their logic.
Raise a CopierAnswersInterrupt instead of a bare KeyboardInterrupt to provide
callers with additional context - such as the partially completed AnswersMap.
Support for user_defaults, which take precedence over template defaults.
Copy dirty changes from a git-tracked template to the project by default, to make
testing easier.
Advertise clearly which version is being copied or updated in the CLI.
Add jinja variable _copier_python to provide python sys.executable.
Changed
Fully refactored core.
Running copier copy on a preexisting project now recopies the project instead of
updating it. That means that it respects old answers, but ignores history diff.
We use Jinja 2 defaults now. {{ }} instead of [[ ]] and similar.
We keep trailing newlines by default for Jinja 2 templates.
Copier will never ask for overwriting the answers file.
Multi-typed choices follow the same type-casting logic as any other question, so
it's easier to reason about them. However, if you were using this feature, you might
be surprised about its side effects if you don't specify the type explicitly. Just
add type: yaml to make it behave mostly as before. Or just don't use that, it's
complicated anyway (warn added to docs).
Changed --force to be the same as --defaults --overwrite.
Copied files will reflect permissions on the same files in the template.
Copier now uses git clone --filter=blob:none when cloning, to be faster.
Removing files from templates will remove them too from the subprojects when they
get updated.
Deprecated
Deprecated now and make_secret functions. If your template used those, Copier
will emit warnings leading you on how to upgrade it.
Templates marked with _min_copier_version below 6 will still default to use
bracket-based Jinja defaults, but that will disappear soon. If you want your
template to work on Copier 5 and 6, make sure to declare _envops explicitly in
your copier.yaml.
copier.copy() is confusing, now that actually copying and updating are 2
completely different actions (before, you were actually always updating if
possible). Its direct equivalent is now copier.run_auto(), and copier.copy()
will disappear in the future.
Removed
Minimal supported Python version is now 3.7 (dropped Python 3.6 support).
Removed the json method on _copier_conf. Where you would previously use _copier_conf.json() in your templates, please now use _copier_conf|to_json
instead.
--subdirectory flag, which was confusing... and probably useless.
Lots of dead code.
Fixed
A directory that gets an empty name works as expected: not copied (nor its
contents).
When comparing versions to update, PEP 440 is always used now. This way, we avoid
fake ordering when git commit descriptions happen to be ordered in a non-predictable
way.
Answers file will only remember answers to questions specified in the questionary.
This discussion was created from the release v6.0.0.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
All changes here.
Summary:
Added
--defaults
flag to use default answers to questions, which might be null ifnot specified.
--overwrite
flag to overwrite files that already exist, without asking.$VERSION_PEP440_FROM
,$VERSION_PEP440_CURRENT
and$VERSION_PEP440_TO
, which will always get a validPEP440 version identifier, without the
v
prefix, allowing your migration scriptsto have a valid standard where to base their logic.
callers with additional context - such as the partially completed AnswersMap.
user_defaults
, which take precedence over template defaults.testing easier.
_copier_python
to provide pythonsys.executable
.Changed
copier copy
on a preexisting project now recopies the project instead ofupdating it. That means that it respects old answers, but ignores history diff.
{{ }}
instead of[[ ]]
and similar.it's easier to reason about them. However, if you were using this feature, you might
be surprised about its side effects if you don't specify the type explicitly. Just
add
type: yaml
to make it behave mostly as before. Or just don't use that, it'scomplicated anyway (warn added to docs).
--force
to be the same as--defaults --overwrite
.git clone --filter=blob:none
when cloning, to be faster.get updated.
Deprecated
now
andmake_secret
functions. If your template used those, Copierwill emit warnings leading you on how to upgrade it.
_min_copier_version
below 6 will still default to usebracket-based Jinja defaults, but that will disappear soon. If you want your
template to work on Copier 5 and 6, make sure to declare
_envops
explicitly inyour
copier.yaml
.copier.copy()
is confusing, now that actually copying and updating are 2completely different actions (before, you were actually always updating if
possible). Its direct equivalent is now
copier.run_auto()
, andcopier.copy()
will disappear in the future.
Removed
json
method on_copier_conf
. Where you would previously use_copier_conf.json()
in your templates, please now use_copier_conf|to_json
instead.
--subdirectory
flag, which was confusing... and probably useless.Fixed
contents).
fake ordering when git commit descriptions happen to be ordered in a non-predictable
way.
This discussion was created from the release v6.0.0.
Beta Was this translation helpful? Give feedback.
All reactions