Skip to content

Releases: copier-org/copier

v6.1.0

13 Jun 09:49
9ee4fe1
Compare
Choose a tag to compare

Feat

  • support getting template commit hash with {{ _copier_conf.vcs_ref_hash }}
  • simplify the format of the question prompt (#689)

Fix

  • ignore non-PEP-440-compliant tags (#676)

v6.0.0

15 May 09:16
Compare
Choose a tag to compare

All changes here.
Summary:

Added

  • Allow using additional Jinja 2 extensions.
  • 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.

v5.1.0

17 Aug 07:34
Compare
Choose a tag to compare

All changes here. Summary:

  • Forbid downgrades.
  • Print all logs to STDERR.

v5.0.0

13 Aug 12:15
Compare
Choose a tag to compare

All changes here. Summary:

  • Add --prerelease flag, which will be False by default. This is a behavioral change and that's basically why I'm doing a new major release. All other changes are minor here.
  • Better docs.

v4.1.0

10 Aug 11:32
Compare
Choose a tag to compare

All changes here. Summary:

  • Make copier work fine with Git 2.28.
  • We have docs!
  • Polish docs a little bit.
  • We now run tests on macOS and Windows!

v4.0.2

21 Jul 08:30
Compare
Choose a tag to compare

All changes here. Summary:

  • Fix a bug where questions with templated defaults would not be asked to the user.

v4.0.1

23 Jun 09:35
Compare
Choose a tag to compare

All changes here. Summary:

  • Fix a bug where the default value prompted to the user didn't match the reality from his last answer.

v4.0.0

18 Jun 10:37
Compare
Choose a tag to compare

All changes here. Summary:

  • Remove semver to avoid having 2 different versioning systems. We stick to PEP 440 now.
  • Remember where an answer comes from.
  • Do not re-ask to the user if already answer via --data.
  • Support pre-migration scripts that modify the answers file.

v3.2.0

03 Jun 08:49
Compare
Choose a tag to compare

v3.1.0

11 May 07:53
ebdf05b
Compare
Choose a tag to compare

All changes here. Summary:

  • Assert minimum copier version.
  • Prettier prompts.
  • Prompt self-templating.
  • Better README.