pekko/project/MiMa.scala

82 lines
2.6 KiB
Scala
Raw Normal View History

/*
* Copyright (C) 2009-2019 Lightbend Inc. <https://www.lightbend.com>
*/
package akka
import sbt._
import sbt.Keys._
import com.typesafe.tools.mima.plugin.MimaPlugin
import com.typesafe.tools.mima.plugin.MimaPlugin.autoImport._
object MiMa extends AutoPlugin {
2019-02-13 13:53:30 +00:00
private val latestPatchOf25 = 21
2018-04-13 10:13:07 +02:00
private val latestPatchOf24 = 20
2017-07-27 13:33:14 +03:00
override def requires = MimaPlugin
override def trigger = allRequirements
override val projectSettings = Seq(
2017-10-06 10:30:28 +02:00
mimaPreviousArtifacts := akkaPreviousArtifacts(name.value, organization.value, scalaBinaryVersion.value))
def akkaPreviousArtifacts(projectName: String, organization: String, scalaBinaryVersion: String): Set[sbt.ModuleID] = {
val versions: Seq[String] = {
val akka24NoStreamVersions = Seq("2.4.0", "2.4.1")
val akka25Versions = (0 to latestPatchOf25).map(patch => s"2.5.$patch")
val akka24StreamVersions = (2 to 12).map("2.4." + _)
val akka25DiscoveryVersions = (19 to latestPatchOf25).map(patch => s"2.5.$patch")
val akka24WithScala212 =
2018-04-13 10:13:07 +02:00
(13 to latestPatchOf24)
2017-10-06 10:30:28 +02:00
.map("2.4." + _)
.filterNot(_ == "2.4.15") // 2.4.15 was released from the wrong branch and never announced
val akka242NewArtifacts = Seq(
"akka-stream",
2017-10-06 10:30:28 +02:00
"akka-stream-testkit")
val akka250NewArtifacts = Seq(
2017-10-06 10:30:28 +02:00
"akka-persistence-query")
val akka2519NewArtifacts = Seq(
"akka-discovery"
)
scalaBinaryVersion match {
case "2.11" =>
if (akka2519NewArtifacts.contains(projectName))
akka25DiscoveryVersions
else if (akka250NewArtifacts.contains(projectName)) akka25Versions
else {
if (!akka242NewArtifacts.contains(projectName)) akka24NoStreamVersions
else Seq.empty
} ++ akka24StreamVersions ++ akka24WithScala212 ++ akka25Versions
case "2.12" =>
if (akka2519NewArtifacts.contains(projectName))
akka25DiscoveryVersions
else if (akka250NewArtifacts.contains(projectName))
akka25Versions
else
akka24WithScala212 ++ akka25Versions
case v if v.startsWith("2.13") =>
// no Akka released for 2.13 yet, no jars to check BC against
2017-10-06 10:30:28 +02:00
Seq.empty
}
}
2017-01-24 11:27:24 +01:00
val akka25PromotedArtifacts = Set(
2017-10-06 10:30:28 +02:00
"akka-distributed-data")
// check against all binary compatible artifacts
versions.map { v =>
2017-01-24 11:27:24 +01:00
val adjustedProjectName =
if (akka25PromotedArtifacts(projectName) && v.startsWith("2.4"))
projectName + "-experimental"
else
2017-01-24 11:27:24 +01:00
projectName
organization %% adjustedProjectName % v
}.toSet
}
}