From 9e25b44670f585b39c009f3e89df547db5e5599c Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 26 Jan 2022 03:40:52 +0000 Subject: [PATCH 1/3] Add ifRelevant versions of mima/publish commands --- .../typelevel/sbt/TypelevelKernelPlugin.scala | 30 ++++++++++++++++++- .../sbt/TypelevelSonatypePlugin.scala | 13 +++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala b/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala index 139090b2..d1a79a2a 100644 --- a/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala +++ b/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala @@ -27,6 +27,12 @@ object TypelevelKernelPlugin extends AutoPlugin { object autoImport { lazy val tlIsScala3 = settingKey[Boolean]("True if building with Scala 3") + lazy val tlPublishIfRelevant = taskKey[Unit]( + "A wrapper around the `publish` task which checks to ensure the current scalaVersion is in crossScalaVersions") + + lazy val tlPublishLocalIfRelevant = taskKey[Unit]( + "A wrapper around the `publishLocal` task which checks to ensure the current scalaVersion is in crossScalaVersions") + def tlReplaceCommandAlias(name: String, contents: String): Seq[Setting[State => State]] = Seq(GlobalScope / onLoad ~= { (f: State => State) => f andThen { s: State => @@ -42,8 +48,30 @@ object TypelevelKernelPlugin extends AutoPlugin { ) override def buildSettings = - addCommandAlias("tlReleaseLocal", mkCommand(List("reload", "project /", "+publishLocal"))) + addCommandAlias( + "tlReleaseLocal", + mkCommand(List("reload", "project /", "+tlPublishLocalIfRelevant"))) + + override def projectSettings = Seq( + tlPublishIfRelevant := filterTaskWhereRelevant(publish).value, + tlPublishLocalIfRelevant := filterTaskWhereRelevant(publishLocal).value + ) private[sbt] def mkCommand(commands: List[String]): String = commands.mkString("; ", "; ", "") + private[sbt] def filterTaskWhereRelevant(delegate: TaskKey[Unit]) = + Def.taskDyn { + val cross = crossScalaVersions.value + val ver = (ThisBuild / scalaVersion).value + + if (cross.contains(ver)) + Def.task(delegate.value) + else + Def.task( + streams + .value + .log + .warn(s"skipping `${delegate.key.label}` in ${name.value}: $ver is not in $cross")) + } + } diff --git a/sonatype/src/main/scala/org/typelevel/sbt/TypelevelSonatypePlugin.scala b/sonatype/src/main/scala/org/typelevel/sbt/TypelevelSonatypePlugin.scala index ecfe1d0d..3bdb6002 100644 --- a/sonatype/src/main/scala/org/typelevel/sbt/TypelevelSonatypePlugin.scala +++ b/sonatype/src/main/scala/org/typelevel/sbt/TypelevelSonatypePlugin.scala @@ -19,7 +19,7 @@ package org.typelevel.sbt import sbt._, Keys._ import com.typesafe.tools.mima.plugin.MimaPlugin import xerial.sbt.Sonatype, Sonatype.autoImport._ -import TypelevelKernelPlugin.mkCommand +import TypelevelKernelPlugin._ object TypelevelSonatypePlugin extends AutoPlugin { @@ -30,9 +30,13 @@ object TypelevelSonatypePlugin extends AutoPlugin { object autoImport { lazy val tlSonatypeUseLegacyHost = settingKey[Boolean]("Publish to oss.sonatype.org instead of s01 (default: true)") + + lazy val tlMimaReportBinaryIssuesIfRelevant = taskKey[Unit]( + "A wrapper around the `mimaReportBinaryIssues` task which checks to ensure the current scalaVersion is in crossScalaVersions") } import autoImport._ + import MimaPlugin.autoImport._ override def buildSettings = Seq(tlSonatypeUseLegacyHost := true) ++ @@ -42,8 +46,8 @@ object TypelevelSonatypePlugin extends AutoPlugin { List( "reload", "project /", - "+mimaReportBinaryIssues", - "+publish", + "+tlMimaReportBinaryIssuesIfRelevant", + "+tlPublishIfRelevant", "tlSonatypeBundleReleaseIfRelevant")) ) @@ -57,7 +61,8 @@ object TypelevelSonatypePlugin extends AutoPlugin { "oss.sonatype.org" else "s01.oss.sonatype.org" - } + }, + tlMimaReportBinaryIssuesIfRelevant := filterTaskWhereRelevant(mimaReportBinaryIssues).value ) private def sonatypeBundleReleaseIfRelevant: Command = From 6fb079c1dc608f45da7374d971798747c236c812 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 26 Jan 2022 03:46:40 +0000 Subject: [PATCH 2/3] Info log instead of warn --- .../main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala b/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala index d1a79a2a..ed205788 100644 --- a/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala +++ b/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala @@ -71,7 +71,7 @@ object TypelevelKernelPlugin extends AutoPlugin { streams .value .log - .warn(s"skipping `${delegate.key.label}` in ${name.value}: $ver is not in $cross")) + .info(s"skipping `${delegate.key.label}` in ${name.value}: $ver is not in $cross")) } } From 8bfc1c70b3e417435d9fb999a06a9cecfde94370 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 26 Jan 2022 04:10:29 +0000 Subject: [PATCH 3/3] Formatting --- .../org/typelevel/sbt/TypelevelKernelPlugin.scala | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala b/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala index ed205788..0142bb0a 100644 --- a/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala +++ b/kernel/src/main/scala/org/typelevel/sbt/TypelevelKernelPlugin.scala @@ -66,12 +66,10 @@ object TypelevelKernelPlugin extends AutoPlugin { if (cross.contains(ver)) Def.task(delegate.value) - else - Def.task( - streams - .value - .log - .info(s"skipping `${delegate.key.label}` in ${name.value}: $ver is not in $cross")) + else { + val msg = s"skipping `${delegate.key.label}` in ${name.value}: $ver is not in $cross" + Def.task(streams.value.log.info(msg)) + } } }