crate-ci / cargo-release

Cargo subcommand `release`: everything about releasing a rust crate.
Apache License 2.0
1.31k stars 109 forks source link

Support calver numbering? #802

Open sourcefrog opened 1 month ago

sourcefrog commented 1 month ago

How would you feel about a configuration option to turn on CalVer numbering?

That is, when automatically selecting a new version number for a release, instead of incrementing the patch level etc, it would follow this logic:

Actually, there are variations for whether people want four-digit years, whether the last field should be the day-of-month, etc.

The motivation is that I'm using this for cargo-mutants.

epage commented 1 month ago

How would you feel about a configuration option to turn on CalVer numbering?

CalVer is fine for binaries but is incompatible with packaging of libraries in Rust and I'd prefer for there to be some friction to this feature to avoid streamlining "bad behavior".

If yy.mm == YY.MM then increment the final field (micro / "patch level")

For error recovery purposes, we don't bump versions by default, so we'd need some way to indicate "bump for calver" on the command-line.

We' also need to be conscious of workspaces where libraries and binaries might be present.

One idea

Thoughts?

sourcefrog commented 1 month ago

I agree about warning (or maybe even refusing?) if there are any library crates in scope. idk if you read cargo-metadata today; if not this might make it a larger PR. I have not thought through what happens with crates that build a library but are intended for use as a binary, although that's probably common. Maybe just saying "if there's a bin target it's fine" is OK.

Otherwise that all sounds good, just remembering we'd want to let people configure what specific style of calver they're using.

epage commented 1 month ago

just remembering we'd want to let people configure what specific style of calver they're using.

I had overlooked this part of the issue. Thats a bit annoying.