2019-01-02 18:55:26 +08:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2009-2019 Lightbend Inc. <https://www.lightbend.com>
|
2015-01-22 20:26:34 +02:00
|
|
|
*/
|
2018-03-13 23:45:55 +09:00
|
|
|
|
2015-01-22 20:26:34 +02:00
|
|
|
package akka
|
|
|
|
|
|
2019-04-19 08:54:25 +02:00
|
|
|
import scala.collection.immutable
|
2015-02-19 15:49:02 +01:00
|
|
|
import sbt._
|
2016-03-10 10:45:35 +02:00
|
|
|
import sbt.Keys._
|
|
|
|
|
import com.typesafe.tools.mima.plugin.MimaPlugin
|
|
|
|
|
import com.typesafe.tools.mima.plugin.MimaPlugin.autoImport._
|
2015-01-22 20:26:34 +02:00
|
|
|
|
|
|
|
|
object MiMa extends AutoPlugin {
|
|
|
|
|
|
2019-08-12 13:06:55 +02:00
|
|
|
private val latestPatchOf25 = 24
|
2019-04-19 08:54:25 +02:00
|
|
|
// No 2.6 has been released yet. Update to '0' after releasing 2.6.0
|
|
|
|
|
private val latestPatchOf26 = -1
|
2017-07-27 13:33:14 +03:00
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
override def requires = MimaPlugin
|
2015-01-22 20:26:34 +02:00
|
|
|
override def trigger = allRequirements
|
|
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
override val projectSettings = Seq(
|
2017-10-06 10:30:28 +02:00
|
|
|
mimaPreviousArtifacts := akkaPreviousArtifacts(name.value, organization.value, scalaBinaryVersion.value))
|
2015-05-21 09:48:49 +03:00
|
|
|
|
2019-04-03 16:37:39 +02:00
|
|
|
def akkaPreviousArtifacts(
|
|
|
|
|
projectName: String,
|
|
|
|
|
organization: String,
|
|
|
|
|
scalaBinaryVersion: String): Set[sbt.ModuleID] = {
|
2016-12-15 16:01:32 +01:00
|
|
|
|
2019-04-19 08:54:25 +02:00
|
|
|
val versions: Seq[String] = {
|
2016-03-10 10:45:35 +02:00
|
|
|
scalaBinaryVersion match {
|
2019-02-09 15:25:39 +01:00
|
|
|
case "2.12" =>
|
2019-04-19 08:54:25 +02:00
|
|
|
val firstPatchOf25 =
|
|
|
|
|
if (projectName.contains("discovery")) 19
|
2019-04-24 11:46:04 +02:00
|
|
|
else if (projectName.contains("coordination")) 22
|
2019-04-19 08:54:25 +02:00
|
|
|
else 0
|
2018-04-24 22:58:54 +09:00
|
|
|
|
2019-05-29 14:38:14 +01:00
|
|
|
if (!projectName.contains("typed")) {
|
|
|
|
|
expandVersions(2, 5, firstPatchOf25 to latestPatchOf25)
|
|
|
|
|
} else {
|
|
|
|
|
Nil
|
|
|
|
|
} ++ expandVersions(2, 6, 0 to latestPatchOf26)
|
2017-10-30 11:00:52 -07:00
|
|
|
case v if v.startsWith("2.13") =>
|
2019-04-19 08:54:25 +02:00
|
|
|
// When 2.13.0 is actually out, release 2.5.latestPatchOf25 for that
|
|
|
|
|
// and add it here. https://github.com/akka/akka/issues/26764
|
|
|
|
|
expandVersions(2, 6, 0 to latestPatchOf26)
|
2016-03-10 10:45:35 +02:00
|
|
|
}
|
|
|
|
|
}
|
2017-05-22 16:51:29 +02:00
|
|
|
|
2019-04-03 16:37:39 +02:00
|
|
|
val akka25PromotedArtifacts = Set("akka-distributed-data")
|
2019-05-29 14:38:14 +01:00
|
|
|
val akkaTypedModules = Set("akka-actor-typed")
|
2016-03-10 10:45:35 +02:00
|
|
|
|
|
|
|
|
// check against all binary compatible artifacts
|
2019-02-09 15:25:39 +01:00
|
|
|
versions.map { v =>
|
2017-01-24 11:27:24 +01:00
|
|
|
val adjustedProjectName =
|
|
|
|
|
if (akka25PromotedArtifacts(projectName) && v.startsWith("2.4"))
|
|
|
|
|
projectName + "-experimental"
|
2017-05-22 16:51:29 +02:00
|
|
|
else
|
2017-01-24 11:27:24 +01:00
|
|
|
projectName
|
|
|
|
|
organization %% adjustedProjectName % v
|
|
|
|
|
}.toSet
|
2016-03-10 10:45:35 +02:00
|
|
|
}
|
2019-04-19 08:54:25 +02:00
|
|
|
|
|
|
|
|
private def expandVersions(major: Int, minor: Int, patches: immutable.Seq[Int]): immutable.Seq[String] =
|
|
|
|
|
patches.map(patch => s"$major.$minor.$patch")
|
2015-01-22 20:26:34 +02:00
|
|
|
}
|