renovatebot / renovate

Home of the Renovate CLI: Cross-platform Dependency Automation by Mend.io
https://mend.io/renovate
GNU Affero General Public License v3.0
17.64k stars 2.32k forks source link

copier support #25556

Closed rarkins closed 3 months ago

rarkins commented 1 year ago

New package manager questionnaire

Did you read our documentation on adding a package manager?

Basics

What's the name of the package manager?

Copier

What language(s) does this package manager support?

It is a tool that generates/scaffolds any text files, according to the template. The templates are Git repos, and they use Git tags for versioning.

How popular is this package manager?

Currently, 1.3k stars on GitHub, and 139 forks.

Does this language have other (competing?) package managers?

What are the big selling points for this package manager?

It is not for updating dependencies, but it is intended to keep the scaffolded code up-to-date.

For example, README file is part of scaffolding, and if a badge needs to be updated, the automatic re-run of copier (executed by Renovatebot) would prepare a PR to update the badge.

Detecting package files

What kind of package files, and names, does this package manager use?

Every project scaffolded using copier has the following file: .copier-answers.yml

Which fileMatch pattern(s) should Renovate use?

Probably something like .copier-answers.yml

Do many users need to extend the fileMatch pattern for custom file names?

Probably something like (.*)\.copier-answers.yml$

Is the fileMatch pattern going to get many "false hits" for files that have nothing to do with package management?

IMHO not.

Parsing and Extraction

Can package files have "local" links to each other that need to be resolved?

No.

Package file parsing method

The package files should be:

Which format/syntax does the package file use?

How should we parse the package files?

Does the package file have different "types" of dependencies?

List all the sources/syntaxes of dependencies that can be extracted

The YAML file contains the following fields:

Describe which types of dependencies above are supported and which will be implemented in future

The template doesn't have to be a Git repo, it could be also a local path. But this is not interesting for Renovate, IMHO.

When executing copier, it uses the latest version according to PEP-440, but e.g. latest commit from a branch could be specified manually: https://copier.readthedocs.io/en/latest/generating/#copying-dirty-changes

Versioning

What versioning scheme does the package file(s) use?

PEP 440

Does this versioning scheme support range constraints, like ^1.0.0 or 1.x?

Lookup

Is a new datasource required?

Will users want (or need to) set a custom host or custom registry for Renovate's lookup?

Where can Renovate find the custom host/registry?

Are there any constraints in the package files that Renovate should use in the lookup procedure?

Will users need the ability to configure language or other constraints using Renovate config?

Artifacts

Does the package manager use a lock file or checksum file?

Is the locksum or checksum mandatory?

If lockfiles or checksums are used: what tool and exact commands should Renovate use to update one (or more) package versions in a dependency file?

Package manager cache

Does the package manager use a cache?

If the package manager uses a cache, how can Renovate control the cache?

Should Renovate keep a cache?

Generating a lockfile from scratch

Renovate can perform "lock file maintenance" by getting the package manager to generate a lockfile from scratch. Can the package manager generate a lockfile from scratch?

Other

What else should we know about this package manager?

Originally posted by @augi in https://github.com/renovatebot/renovate/discussions/25538#discussioncomment-7449537

ThomasSanson commented 1 year ago

Dear @rarkins and the Renovate Team,

I am writing to propose a substantial extension for the integration of Copier within Renovate, focusing on the management of multiple models and the automation of the update process. Please find below the key aspects of my suggestion, supported by the official Copier documentation: Applying Multiple Templates to the Same Subproject.

Management of Multiple Models:

Automated Update Process:

This integration would markedly improve the management of dependencies and configurations in complex projects, by automating processes and ensuring consistent coherence and currency. This development would enhance the utility of Renovate in more complex development scenarios, providing superior support for environments where Copier is extensively used for code maintenance and configuration.

I am most grateful for your consideration of this proposal, which I believe could greatly enrich Renovate's capabilities in managing projects utilising Copier.

Kind regards,

ThomasSanson commented 10 months ago

Hi team,

Just following up here. Any updates or further thoughts would be greatly appreciated.

Thanks !

rarkins commented 10 months ago

This proposal is accepted - PRs welcome

renovate-release commented 3 months ago

:tada: This issue has been resolved in version 38.19.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket: