cargo-release icon indicating copy to clipboard operation
cargo-release copied to clipboard

Support calver numbering?

Open sourcefrog opened this issue 1 year ago • 3 comments

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.

sourcefrog avatar Jul 25 '24 14:07 sourcefrog

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
  • calver bump level that will error on if CalVer is not set
  • major, minor, and patch bump levels are implicitly calver when the package says so
    • This allows you to do cargo release --workspace patch and get the right behavior

Thoughts?

epage avatar Jul 25 '24 14:07 epage

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.

sourcefrog avatar Jul 25 '24 17:07 sourcefrog

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.

epage avatar Jul 25 '24 17:07 epage