in modules/core/src/main/scala/org/scalasteward/core/data/SemVer.scala [63:88]
def getChangeSpec(from: SemVer, to: SemVer): Option[Change] =
if (from.major =!= to.major) Some(Major)
else if (from.minor =!= to.minor) Some(Minor)
else if (from.preRelease =!= to.preRelease) Some(PreRelease)
else if (from.patch =!= to.patch) Some(Patch)
else if (from.buildMetadata =!= to.buildMetadata) Some(BuildMetadata)
else None
@tailrec
def getChangeEarly(from: SemVer, to: SemVer): Option[Change] = {
val zero = "0"
// Codacy doesn't allow using `if`s, so using `match` instead
(from.major === zero, to.major === zero) match { // work around Codacy's "Consider using case matching instead of else if blocks"
case (true, true)
if from.minor =!= zero ||
to.minor =!= zero ||
from.patch =!= zero ||
to.patch =!= zero =>
getChangeEarly(
from.copy(major = from.minor, minor = from.patch, patch = zero),
to.copy(major = to.minor, minor = to.patch, patch = zero)
)
case _ =>
getChangeSpec(from, to)
}
}