From 63dd5eed363d72f5cdcc4854f3b7c7a7169e19c9 Mon Sep 17 00:00:00 2001 From: Luke Thomas Date: Fri, 14 Feb 2025 16:38:21 +0000 Subject: [PATCH] x compile to scala 3 --- build.sbt | 18 +++++++++++++----- .../com/itv/bucky/CirceMarshallerTest.scala | 2 +- .../com/itv/bucky/LoggingAmqpClient.scala | 2 +- .../src/main/scala/com/itv/bucky/package.scala | 2 +- .../itv/bucky/test/PublishConsumeTest.scala | 1 + 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/build.sbt b/build.sbt index c2b157a7..45bcd0c8 100644 --- a/build.sbt +++ b/build.sbt @@ -6,6 +6,7 @@ name := "bucky" lazy val scala212 = "2.12.18" lazy val scala213 = "2.13.12" +lazy val scalav3 = "3.3.5" scalaVersion := scala213 scalacOptions += "-Ypartial-unification" @@ -46,9 +47,14 @@ pgpSigningKey := Some("C2B50980F625F2AF9D3CB3AA5709530EE8FA7576") pgpPassphrase := Option(System.getenv("GPG_KEY_PASSPHRASE")).map(_.toArray) +lazy val scala2Only = Seq( + crossScalaVersions := Seq(), + scalaVersion := scala213 +) + lazy val kernelSettings = Seq( - crossScalaVersions := Seq(scala212, scala213), - scalaVersion := scala213, + crossScalaVersions := Seq(scala213, scalav3), + scalaVersion := scalav3, organization := "com.itv", scalacOptions ++= Seq("-feature", "-deprecation", "-language:higherKinds"), publishTo := { @@ -222,6 +228,7 @@ lazy val example = project .settings(name := "com.itv") .settings(moduleName := "bucky-example") .settings(kernelSettings) + .settings(scala2Only) .aggregate(core, argonaut, circe, test) .dependsOn(core, argonaut, circe, test) .settings( @@ -231,9 +238,9 @@ lazy val example = project "org.scalatest" %% "scalatest" % scalaTestVersion, "org.typelevel" %% "cats-effect-testing-scalatest" % catsEffectScalaTestVersion % "test", "com.typesafe" % "config" % typeSafeVersion, - "ch.qos.logback" % "logback-classic" % logbackVersion, - "dev.profunktor" %% "fs2-rabbit" % "5.0.0", - "dev.profunktor" %% "fs2-rabbit-circe" % "5.0.0" + "ch.qos.logback" % "logback-classic" % logbackVersion, + "dev.profunktor" %% "fs2-rabbit" % "5.0.0", + "dev.profunktor" %% "fs2-rabbit-circe" % "5.0.0" ) ) @@ -241,6 +248,7 @@ lazy val argonaut = project .settings(name := "com.itv") .settings(moduleName := "bucky-argonaut") .settings(kernelSettings) + .settings(scala2Only) .aggregate(core, test) .dependsOn(core, test % "test") .settings( diff --git a/circe/src/test/scala/com/itv/bucky/CirceMarshallerTest.scala b/circe/src/test/scala/com/itv/bucky/CirceMarshallerTest.scala index 7e022a93..e2008cbe 100644 --- a/circe/src/test/scala/com/itv/bucky/CirceMarshallerTest.scala +++ b/circe/src/test/scala/com/itv/bucky/CirceMarshallerTest.scala @@ -21,7 +21,7 @@ class CirceMarshallerTest extends AnyFunSuite { test("Can marshall a json") { val json: Json = Foo("bar").asJson - val marshaller = implicitly[PayloadMarshaller[Json]] + val marshaller: PayloadMarshaller[Json] = marshallerFromEncodeJson marshaller(json) shouldBe Payload.from(json) } diff --git a/core/src/main/scala/com/itv/bucky/LoggingAmqpClient.scala b/core/src/main/scala/com/itv/bucky/LoggingAmqpClient.scala index 7b6d5c0a..ed29f199 100644 --- a/core/src/main/scala/com/itv/bucky/LoggingAmqpClient.scala +++ b/core/src/main/scala/com/itv/bucky/LoggingAmqpClient.scala @@ -74,7 +74,7 @@ object LoggingAmqpClient extends StrictLogging { override def publisher(mandatory: Boolean): F[Publisher[F, PublishCommand]] = amqpClient.publisher().map { originalPublisher => - cmd: PublishCommand => + (cmd: PublishCommand) => (for { result <- originalPublisher(cmd).attempt _ <- result.fold[F[Unit]](logFailedPublishMessage(_, charset, cmd), _ => logSuccessfullPublishMessage(charset, cmd)) diff --git a/core/src/main/scala/com/itv/bucky/package.scala b/core/src/main/scala/com/itv/bucky/package.scala index 86081108..58689eef 100644 --- a/core/src/main/scala/com/itv/bucky/package.scala +++ b/core/src/main/scala/com/itv/bucky/package.scala @@ -105,7 +105,7 @@ package object bucky { implicit class PublisherSugar[F[_]: Applicative](amqpClient: AmqpClient[F]) { def publisherOf[T](mandatory: Boolean)(implicit publishCommandBuilder: PublishCommandBuilder[T]): F[Publisher[F, T]] = - amqpClient.publisher(mandatory).map { basePublisher => value: T => + amqpClient.publisher(mandatory).map { basePublisher => (value: T) => { val command = publishCommandBuilder.toPublishCommand(value) basePublisher.apply(command) diff --git a/test/src/test/scala/com/itv/bucky/test/PublishConsumeTest.scala b/test/src/test/scala/com/itv/bucky/test/PublishConsumeTest.scala index e66a38a1..dc0a6749 100644 --- a/test/src/test/scala/com/itv/bucky/test/PublishConsumeTest.scala +++ b/test/src/test/scala/com/itv/bucky/test/PublishConsumeTest.scala @@ -14,6 +14,7 @@ import org.scalatest.concurrent.{Eventually, IntegrationPatience, ScalaFutures} import org.scalatest.funsuite.AsyncFunSuite import org.scalatest.matchers.should.Matchers import org.scalatest.matchers.should.Matchers._ +import com.itv.bucky.ConsumerSugar import scala.language.reflectiveCalls import cats.effect.unsafe.IORuntime