blitzcode / hackage-diff

Compare the public API of different versions of a Hackage library
MIT License
63 stars 6 forks source link

Suggest new version #8

Open agrafix opened 7 years ago

agrafix commented 7 years ago

Nice tool! :-) It would be really nice if the tool could also suggest the next version, maybe even with a flag for selecting either PVP or SemVer?

blitzcode commented 7 years ago

Glad you like it!

I don't understand what 'next version' should be suggested?

agrafix commented 7 years ago

Currently, I can call the tool with hackage-diff conduit 1.1.5 ~/tmp/conduit-1.1.6/dist/doc/html/conduit/conduit.txt to see the API diff between conduit 1.1.5 and the local conduit 1.1.6. What I would like to do would be to call hackage-diff --pvp-version conduit 1.1.5 ~/my-local-unreleased-conduit and the tool outputs something like this:

Based on this diff:

+ Data.Serialize.IEEE754
  + getFloat32be :: Get Float
  + getFloat32le :: Get Float
  + getFloat64be :: Get Double
  + getFloat64le :: Get Double
  + putFloat32be :: Float -> Put
  + putFloat32le :: Float -> Put
  + putFloat64be :: Double -> Put
  + putFloat64le :: Double -> Put
× Data.Serialize
  + instance Serialize a => GSerialize (K1 i a)
[...]

we can see a BREAKING CHANGE. Thus, the new version for ~/my-local-unreleased-conduit must be at least 2.0.0
blitzcode commented 7 years ago

Hm, not sure I find that terribly useful. I mean, it's basically if breakingChange then bumpMajor else bumpMinor? That just seems like it would require zero mental effort to do yourself and copy & pasting the version number from the output (and / or typing --pvp-version) might actually be more work than to just +1 an integer in the .cabal file 'manually'.

agrafix commented 7 years ago

That's true, but this way one could include it in the CI pipeline and have it enforced (or at least checked) automatically.

Am 23.12.2016 um 12:13 schrieb Tim C. Schröder notifications@github.com:

Hm, not sure I find that terribly useful. I mean, it's basically if breakingChange then bumpMajor else bumpMinor? That just seems like it would require zero mental effort to do yourself and copy & pasting the version number from the output (and / or typing --pvp-version) might actually be more work than to just +1 an integer in the .cabal file 'manually'.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

blitzcode commented 7 years ago

Would it perhaps be even better then to have the process exit code indicate no changes / no breaking changes / breaking changes? Easiest to integrate into a script (no parsing).

agrafix commented 7 years ago

Yes, that sounds great! Then everything else can be implemented around it via script.