Skip to content

Commit 5a629ce

Browse files
committed
build: Prepare Scala 3 build
1 parent e609389 commit 5a629ce

File tree

7 files changed

+67
-31
lines changed

7 files changed

+67
-31
lines changed

build.sbt

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ lazy val bundleMonixHttp4sBlaze = project
6565
.settings(BuildSettings.common)
6666
.settings(
6767
name := "sst-bundle-monix-http4s-blaze",
68-
libraryDependencies += Dependencies.monixEval
68+
libraryDependencies += Dependencies.monixEval,
69+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
6970
)
7071

7172
lazy val bundleZioHttp4sBlaze = project
@@ -86,7 +87,8 @@ lazy val bundleZioHttp4sBlaze = project
8687
libraryDependencies ++= Seq(
8788
Dependencies.zio,
8889
Dependencies.zioInteropCats
89-
)
90+
),
91+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
9092
)
9193

9294
lazy val cassandraDatastaxDriver = project
@@ -103,7 +105,8 @@ lazy val cassandraDatastaxDriverPureConfig = project
103105
.settings(BuildSettings.common)
104106
.settings(
105107
name := "sst-cassandra-datastax-driver-pureconfig",
106-
libraryDependencies += Dependencies.pureConfig
108+
libraryDependencies += Dependencies.pureConfig,
109+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
107110
)
108111

109112
lazy val catsEffect = project
@@ -128,7 +131,8 @@ lazy val doobieHikariPureConfig = project
128131
.settings(BuildSettings.common)
129132
.settings(
130133
name := "sst-doobie-hikari-pureconfig",
131-
libraryDependencies += Dependencies.pureConfig
134+
libraryDependencies += Dependencies.pureConfig,
135+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
132136
)
133137

134138
lazy val example = project
@@ -155,7 +159,8 @@ lazy val example = project
155159
libraryDependencies ++= Seq(
156160
Dependencies.logbackClassic,
157161
Dependencies.postgresql
158-
)
162+
),
163+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
159164
)
160165

161166
lazy val flyway = project
@@ -175,7 +180,8 @@ lazy val flywayPureConfig = project
175180
.settings(BuildSettings.common)
176181
.settings(
177182
name := "sst-flyway-pureconfig",
178-
libraryDependencies += Dependencies.pureConfig
183+
libraryDependencies += Dependencies.pureConfig,
184+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
179185
)
180186

181187
lazy val fs2Kafka = project
@@ -197,7 +203,8 @@ lazy val fs2KafkaPureConfig = project
197203
.settings(BuildSettings.common)
198204
.settings(
199205
name := "sst-fs2-kafka-pureconfig",
200-
libraryDependencies += Dependencies.pureConfig
206+
libraryDependencies += Dependencies.pureConfig,
207+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
201208
)
202209

203210
lazy val grpcServer = project
@@ -228,7 +235,8 @@ lazy val grpcServerPureConfig = project
228235
.settings(BuildSettings.common)
229236
.settings(
230237
name := "sst-grpc-server-pureconfig",
231-
libraryDependencies += Dependencies.pureConfig
238+
libraryDependencies += Dependencies.pureConfig,
239+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
232240
)
233241

234242
lazy val http4sClientBlaze = project
@@ -243,7 +251,10 @@ lazy val http4sClientBlazePureConfig = project
243251
.in(file("http4s-client-blaze-pureconfig"))
244252
.dependsOn(http4sClientBlaze, jvmPureConfig)
245253
.settings(BuildSettings.common)
246-
.settings(name := "sst-http4s-client-blaze-pureconfig")
254+
.settings(
255+
name := "sst-http4s-client-blaze-pureconfig",
256+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
257+
)
247258

248259
lazy val http4sClientMonixCatnap = project
249260
.in(file("http4s-client-monix-catnap"))
@@ -286,7 +297,8 @@ lazy val http4sServerBlazePureConfig = project
286297
.settings(BuildSettings.common)
287298
.settings(
288299
name := "sst-http4s-server-blaze-pureconfig",
289-
libraryDependencies += Dependencies.pureConfig
300+
libraryDependencies += Dependencies.pureConfig,
301+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
290302
)
291303

292304
lazy val http4sServerMicrometer = project
@@ -314,7 +326,8 @@ lazy val jdkHttpClientPureConfig = project
314326
.settings(BuildSettings.common)
315327
.settings(
316328
name := "sst-jdk-http-client-pureconfig",
317-
libraryDependencies += Dependencies.pureConfig
329+
libraryDependencies += Dependencies.pureConfig,
330+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
318331
)
319332

320333
lazy val jvm = project
@@ -343,7 +356,8 @@ lazy val jvmPureConfig = project
343356
.settings(BuildSettings.common)
344357
.settings(
345358
name := "sst-jvm-pureconfig",
346-
libraryDependencies += Dependencies.pureConfig
359+
libraryDependencies += Dependencies.pureConfig,
360+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
347361
)
348362

349363
lazy val lettuce = project
@@ -360,7 +374,8 @@ lazy val lettucePureConfig = project
360374
.settings(BuildSettings.common)
361375
.settings(
362376
name := "sst-lettuce-pureconfig",
363-
libraryDependencies += Dependencies.pureConfig
377+
libraryDependencies += Dependencies.pureConfig,
378+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
364379
)
365380

366381
lazy val micrometer = project
@@ -391,7 +406,8 @@ lazy val micrometerJmxPureConfig = project
391406
.settings(BuildSettings.common)
392407
.settings(
393408
name := "sst-micrometer-jmx-pureconfig",
394-
libraryDependencies += Dependencies.pureConfig
409+
libraryDependencies += Dependencies.pureConfig,
410+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
395411
)
396412

397413
lazy val micrometerStatsD = project
@@ -412,7 +428,8 @@ lazy val micrometerStatsDPureConfig = project
412428
.settings(BuildSettings.common)
413429
.settings(
414430
name := "sst-micrometer-statsd-pureconfig",
415-
libraryDependencies += Dependencies.pureConfig
431+
libraryDependencies += Dependencies.pureConfig,
432+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
416433
)
417434

418435
lazy val monixCatnap = project
@@ -444,15 +461,17 @@ lazy val monixCatnapPureConfig = project
444461
.settings(BuildSettings.common)
445462
.settings(
446463
name := "sst-monix-catnap-pureconfig",
447-
libraryDependencies += Dependencies.pureConfig
464+
libraryDependencies += Dependencies.pureConfig,
465+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
448466
)
449467

450468
lazy val pureConfig = project
451469
.in(file("pureconfig"))
452470
.settings(BuildSettings.common)
453471
.settings(
454472
name := "sst-pureconfig",
455-
libraryDependencies += Dependencies.pureConfig
473+
libraryDependencies += Dependencies.pureConfig,
474+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
456475
)
457476

458477
lazy val sentry = project
@@ -469,7 +488,8 @@ lazy val sentryPureConfig = project
469488
.settings(BuildSettings.common)
470489
.settings(
471490
name := "sst-sentry-pureconfig",
472-
libraryDependencies += Dependencies.pureConfig
491+
libraryDependencies += Dependencies.pureConfig,
492+
crossScalaVersions := BuildSettings.crossVersionsWithoutScala3
473493
)
474494

475495
lazy val site = project

cassandra-datastax-driver/src/main/scala/com/avast/sst/datastax/CassandraDatastaxDriverModule.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ object CassandraDatastaxDriverModule {
177177
}
178178
}
179179

180-
val release = { session: CqlSession =>
180+
val release = { (session: CqlSession) =>
181181
Sync[F].delay {
182182
session.close()
183183
}

doobie-hikari/src/main/scala/com/avast/sst/doobie/DoobieHikariConfig.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.avast.sst.doobie
22

3-
import doobie.enum.TransactionIsolation
3+
import doobie.enumerated.TransactionIsolation
44

55
import java.util.concurrent.TimeUnit
66
import scala.concurrent.duration.FiniteDuration

example/src/main/scala/com/avast/sst/example/Main.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,18 @@ object Main extends ZioServerApp {
4747
executorModule
4848
.makeThreadPoolExecutor(
4949
configuration.boundedConnectExecutor,
50-
new ConfigurableThreadFactory(Config(Some("hikari-connect-%02d")))
50+
new ConfigurableThreadFactory(Config(nameFormat = Some("hikari-connect-%02d")))
5151
)
5252
.map(ExecutionContext.fromExecutorService)
5353
hikariMetricsFactory = new MicrometerMetricsTrackerFactory(meterRegistry)
5454
doobieTransactor <-
5555
DoobieHikariModule
56-
.make[Task](configuration.database, boundedConnectExecutionContext, executorModule.blocker, Some(hikariMetricsFactory))
56+
.make[Task](
57+
configuration.database,
58+
boundedConnectExecutionContext: ExecutionContext,
59+
executorModule.blocker,
60+
Some(hikariMetricsFactory)
61+
)
5762
randomService = RandomService(doobieTransactor)
5863
httpClient <- Http4sBlazeClientModule.make[Task](configuration.client, executorModule.executionContext)
5964
circuitBreakerMetrics <- Resource.eval(MicrometerCircuitBreakerMetricsModule.make[Task]("test-http-client", meterRegistry))

example/src/main/scala/com/avast/sst/example/service/RandomService.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.avast.sst.example.service
22

3+
import doobie.Fragment
34
import doobie.implicits._
45
import doobie.util.transactor.Transactor
56
import zio.Task
@@ -16,7 +17,8 @@ object RandomService {
1617
def apply(transactor: Transactor[Task]): RandomService =
1718
new RandomService {
1819
override def randomNumber: Task[Double] = {
19-
sql"select random()"
20+
Fragment
21+
.const("select random()")
2022
.query[Double]
2123
.unique
2224
.transact(transactor)

grpc-server/src/main/scala/com/avast/sst/grpc/server/GrpcServerModule.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ object GrpcServerModule {
3131
.handshakeTimeout(config.handshakeTimeout.toMillis, TimeUnit.MILLISECONDS)
3232
.maxInboundMessageSize(config.maxInboundMessageSize)
3333
.maxInboundMetadataSize(config.maxInboundMetadataSize)
34-
.executor(executionContext.execute)
34+
.executor(executionContext.execute(_))
3535

3636
services.foreach(builder.addService)
3737
interceptors.foreach(builder.intercept)

project/BuildSettings.scala

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ import scalafix.sbt.ScalafixPlugin.autoImport._
1313

1414
object BuildSettings {
1515

16+
private def isScala3(scalaVersion: String): Boolean = CrossVersion.partialVersion(scalaVersion).exists(_._1 == 3)
17+
18+
private val scala212 = "2.12.14"
19+
private val scala213 = "2.13.6"
20+
private val scala3 = "3.0.0"
21+
22+
val crossVersionsWithoutScala3: List[String] = List(scala213, scala212)
23+
1624
lazy val common: Seq[Def.Setting[_]] = Seq(
1725
Global / onChangedBuildSource := ReloadOnSourceChanges,
1826
Global / cancelable := true,
@@ -27,13 +35,13 @@ object BuildSettings {
2735
description := "Functional programming toolkit for building server applications in Scala.",
2836
licenses := Seq("MIT" -> url("https://raw.githubusercontent.com/avast/scala-server-toolkit/master/LICENSE")),
2937
developers := List(Developer("jakubjanecek", "Jakub Janecek", "[email protected]", url("https://www.avast.com"))),
30-
scalaVersion := "2.13.6",
31-
crossScalaVersions := List(scalaVersion.value, "2.12.15"),
38+
scalaVersion := scala213,
39+
crossScalaVersions := List(scala213, scala212, scala3),
3240
fork := true,
33-
libraryDependencies ++= Seq(
34-
compilerPlugin(Dependencies.kindProjector),
41+
libraryDependencies ++= (if (!isScala3(scalaVersion.value)) List(compilerPlugin(Dependencies.kindProjector)) else List.empty) ++ List(
3542
Dependencies.catsEffect,
3643
Dependencies.scalaCollectionCompat,
44+
"org.jetbrains" % "annotations" % "21.0.1", // TODO: this should be compile only dependecy!
3745
Dependencies.logbackClassic % Test,
3846
Dependencies.scalaTest % Test
3947
),
@@ -43,9 +51,10 @@ object BuildSettings {
4351
Dependencies.scalafixScaluzzi,
4452
Dependencies.scalafixOrganizeImports
4553
),
46-
scalacOptions ++= List(
47-
"-Ywarn-unused" // necessary for Scalafix RemoveUnused rule (not present in sbt-tpolecat for 2.13)
48-
) ++ (if (scalaVersion.value.startsWith("2.13")) List("-Wmacros:after") else List.empty),
54+
scalacOptions ++=
55+
// necessary for Scalafix RemoveUnused rule (not present in sbt-tpolecat for 2.13))
56+
(if (isScala3(scalaVersion.value)) List("-source:3.0-migration") else List("-Ywarn-unused")) ++
57+
(if (scalaVersion.value.startsWith("2.13")) List("-Wmacros:after", "-Ytasty-reader") else List.empty),
4958
Compile / doc / scalacOptions -= "-Xfatal-warnings",
5059
missinglinkExcludedDependencies ++= List(
5160
moduleFilter(organization = "ch.qos.logback"),

0 commit comments

Comments
 (0)