Support calver numbering?
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:
- Calculate the current year-month date YY.MM
- Look at the previous release yy.mm
- If yy.mm == YY.MM then increment the final field (micro / "patch level")
- Otherwise, set the final field to zero
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.
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
- config field to opt-in to CalVer
- This fails if no
bins are present
- This fails if no
calverbump level that will error on if CalVer is not setmajor,minor, andpatchbump levels are implicitlycalverwhen the package says so- This allows you to do
cargo release --workspace patchand get the right behavior
- This allows you to do
Thoughts?
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.
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.