Add Strict and Always support

This commit is contained in:
Eugene Yokota 2020-12-20 19:34:03 -05:00
parent 5f2f6ac161
commit aac1edb426
2 changed files with 23 additions and 1 deletions

View File

@ -17,10 +17,12 @@ private[sbt] object VersionSchemes {
final val EarlySemVer = "early-semver"
final val SemVerSpec = "semver-spec"
final val PackVer = "pvp"
final val Strict = "strict"
final val Always = "always"
def validateScheme(value: String): Unit =
value match {
case EarlySemVer | SemVerSpec | PackVer => ()
case EarlySemVer | SemVerSpec | PackVer | Strict | Always => ()
case "semver" =>
sys.error(
s"""'semver' is ambiguous.

View File

@ -161,10 +161,26 @@ object EvictionWarningOptions {
}
}
lazy val guessStrict
: PartialFunction[(ModuleID, Option[ModuleID], Option[ScalaModuleInfo]), Boolean] = {
case (m1, Some(m2), _) =>
(m1.revision, m2.revision) match {
case (VersionNumber(ns1, ts1, es1), VersionNumber(ns2, ts2, es2)) =>
VersionNumber.Strict
.isCompatible(VersionNumber(ns1, ts1, es1), VersionNumber(ns2, ts2, es2))
case _ => false
}
}
lazy val guessFalse
: PartialFunction[(ModuleID, Option[ModuleID], Option[ScalaModuleInfo]), Boolean] = {
case (_, _, _) => false
}
lazy val guessTrue
: PartialFunction[(ModuleID, Option[ModuleID], Option[ScalaModuleInfo]), Boolean] = {
case (_, _, _) => true
}
}
final class EvictionPair private[sbt] (
@ -325,6 +341,10 @@ object EvictionWarning {
})
val schemeOpt = VersionSchemes.extractFromExtraAttributes(extraAttributes)
val f = (winnerOpt, schemeOpt) match {
case (Some(_), Some(VersionSchemes.Always)) =>
EvictionWarningOptions.guessTrue
case (Some(_), Some(VersionSchemes.Strict)) =>
EvictionWarningOptions.guessStrict
case (Some(_), Some(VersionSchemes.EarlySemVer)) =>
EvictionWarningOptions.guessEarlySemVer
case (Some(_), Some(VersionSchemes.SemVerSpec)) =>