Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@ jobs:
jvm: ${{ matrix.java }}
- uses: sbt/setup-sbt@v1

- name: Clean
run: sbt $SBT_JAVA_OPTS -v "cleanScoped ${{ matrix.scala }} ${{ matrix.platform }}"

- name: Compile
run: sbt $SBT_JAVA_OPTS -v "compileScoped ${{ matrix.scala }} ${{ matrix.platform }}"

- name: Test
run: |
export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS --add-opens=java.base/java.lang=ALL-UNNAMED";
sbt $SBT_JAVA_OPTS -v "testScoped ${{ matrix.scala }} ${{ matrix.platform }}"
sbt $SBT_JAVA_OPTS -v "coverage;testScoped ${{ matrix.scala }} ${{ matrix.platform }}"

- name: Scalafmt check sbt
if: matrix.scala == '2.12' && matrix.platform == 'JS'
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,14 @@ libraryDependencies ++= Seq(
"io.kinoplan" %% "utils-implicits-identity" % ${version}, // JVM and Scala.js
"io.kinoplan" %% "utils-implicits-zio" % ${version}, // JVM and Scala.js
"io.kinoplan" %% "utils-implicits-zio-prelude" % ${version}, // JVM and Scala.js
// play
// play 3.x.x
"io.kinoplan" %% "utils-play-error-handler" % ${version}, // JVM only
"io.kinoplan" %% "utils-play-filters-logging" % ${version}, // JVM only
"io.kinoplan" %% "utils-play-reactivemongo" % ${version}, // JVM only
// play 2.x.x
"io.kinoplan" %% "utils-play2-error-handler" % ${version}, // JVM only
"io.kinoplan" %% "utils-play2-filters-logging" % ${version}, // JVM only
"io.kinoplan" %% "utils-play2-reactivemongo" % ${version}, // JVM only
// zio
"io.kinoplan" %% "utils-zio-integration-check" % ${version}, // JVM and Scala.js
"io.kinoplan" %% "utils-zio-http4s-healthcheck" % ${version}, // JVM only
Expand Down
62 changes: 54 additions & 8 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ val commonJsSettings = ProjectSettings.scalaJsSettings

val scopesDescription = "Scala version can be: 2.12, 2.13; platform: JVM, JS"

val cleanScoped = inputKey[Unit](
s"Run clean in the given scope. Usage: cleanScoped [scala version] [platform]. $scopesDescription"
)

val compileScoped = inputKey[Unit](
s"Compiles sources in the given scope. Usage: compileScoped [scala version] [platform]. $scopesDescription"
)
Expand Down Expand Up @@ -73,6 +77,13 @@ lazy val root = project
.in(file("."))
.configure(ProjectSettings.rootProfile)
.settings(
cleanScoped :=
Def
.inputTaskDyn {
val args = spaceDelimited("<arg>").parsed
Def.taskDyn(clean.all(filterByVersionAndPlatform(args.head, args(1))))
}
.evaluated,
compileScoped :=
Def
.inputTaskDyn {
Expand Down Expand Up @@ -325,28 +336,63 @@ lazy val implicitsZioPrelude = projectMatrix

// zzzzzzzzzzzzzzzzzzzz Play Modules zzzzzzzzzzzzzzzzzzzz

lazy val play2Axis = CustomAxis("Play_2", "play2")
lazy val play3Axis = CustomAxis("Play", "play3")

lazy val playErrorHandler = projectMatrix
.in(file("play/error-handler"))
.jvmPlatform(ProjectSettings.scala2Versions)
.configure(ModulesPlay.errorHandlerProfile)
.customRow(
ProjectSettings.scala2Versions,
Seq(play2Axis, VirtualAxis.jvm),
ModulesPlay.errorHandler2Profile
)
.customRow(
ProjectSettings.scala2_13Versions,
Seq(play3Axis, VirtualAxis.jvm),
ModulesPlay.errorHandlerProfile
)
.dependsOn(scalaLogging, playRequestMapContext, playFiltersLogging % "test->test")

lazy val playFiltersLogging = projectMatrix
.in(file("play/filters/logging"))
.jvmPlatform(ProjectSettings.scala2Versions)
.configure(ModulesPlay.filtersLoggingProfile)
.customRow(
ProjectSettings.scala2Versions,
Seq(play2Axis, VirtualAxis.jvm),
ModulesPlay.filtersLogging2Profile
)
.customRow(
ProjectSettings.scala2_13Versions,
Seq(play3Axis, VirtualAxis.jvm),
ModulesPlay.filtersLoggingProfile
)
.dependsOn(scalaLogging, playRequestMapContext)

lazy val playReactivemongo = projectMatrix
.in(file("play/reactivemongo"))
.jvmPlatform(ProjectSettings.scala2Versions)
.configure(ModulesPlay.reactivemongoProfile)
.customRow(
ProjectSettings.scala2Versions,
Seq(play2Axis, VirtualAxis.jvm),
ModulesPlay.reactivemongo2Profile
)
.customRow(
ProjectSettings.scala2_13Versions,
Seq(play3Axis, VirtualAxis.jvm),
ModulesPlay.reactivemongoProfile
)
.dependsOn(reactivemongoBase)

lazy val playRequestMapContext = projectMatrix
.in(file("play/request/map-context"))
.jvmPlatform(ProjectSettings.scala2Versions)
.configure(ModulesPlay.requestMapContextProfile)
.customRow(
ProjectSettings.scala2Versions,
Seq(play2Axis, VirtualAxis.jvm),
ModulesPlay.requestMapContext2Profile
)
.customRow(
ProjectSettings.scala2_13Versions,
Seq(play3Axis, VirtualAxis.jvm),
ModulesPlay.requestMapContextProfile
)
.dependsOn(scalaLogging)

// zzzzzzzzzzzzzzzzzzzz ZIO Modules zzzzzzzzzzzzzzzzzzzz
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package io.kinoplan.utils.play.error

import scala.concurrent.{ExecutionContext, ExecutionContextExecutor}

import akka.stream.Materializer

import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.read.ListAppender
Expand All @@ -18,6 +16,7 @@ import play.api.{Configuration, Environment}
import play.api.mvc.{AnyContentAsEmpty, Result, Results}
import play.api.test.FakeRequest

import io.kinoplan.utils.play.compat.Materializer
import io.kinoplan.utils.play.filters.logging.kit.ListAppenderSyntax
import io.kinoplan.utils.play.request.RequestMapContext

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package io.kinoplan.utils.play

package object compat {
type Materializer = akka.stream.Materializer
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package io.kinoplan.utils.play

package object compat {
type Materializer = org.apache.pekko.stream.Materializer
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ import javax.inject.{Inject, Singleton}

import scala.concurrent.{ExecutionContext, Future}

import akka.stream.Materializer

import org.slf4j.MarkerFactory
import play.api.{ConfigLoader, Configuration, MarkerContext}
import play.api.http.{MimeTypes, Status}
import play.api.mvc._

import io.kinoplan.utils.play.compat.Materializer
import io.kinoplan.utils.play.request.RequestMapContext
import io.kinoplan.utils.scala.logging.Loggable
import io.kinoplan.utils.scala.logging.context.MapContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package io.kinoplan.utils.play.filters.logging
import scala.concurrent.{ExecutionContext, ExecutionContextExecutor, Future}
import scala.xml.Elem

import akka.stream.Materializer

import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.read.ListAppender
Expand All @@ -21,6 +19,7 @@ import play.api.libs.json.{JsObject, Json}
import play.api.mvc._
import play.api.test._

import io.kinoplan.utils.play.compat.Materializer
import io.kinoplan.utils.play.filters.logging.kit.ListAppenderSyntax
import io.kinoplan.utils.play.request.RequestMapContext
import io.kinoplan.utils.scala.logging.context.MapContext
Expand Down
3 changes: 3 additions & 0 deletions project/CustomAxis.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import sbt.*

case class CustomAxis(idSuffix: String, directorySuffix: String) extends VirtualAxis.WeakAxis
10 changes: 6 additions & 4 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ object Dependencies {
val circeV = "0.14.10"
val logbackV = "1.5.12"
val openTelemetryV = "1.43.0"
val playV = "2.8.22"
val reactivemongoV = "1.1.0-RC13"
val scalaJavaTimeV = "2.6.0"
val sttpV = "3.10.1"
Expand Down Expand Up @@ -54,18 +53,21 @@ object Dependencies {
val openTelemetryExporterLoggingOtlp = "io.opentelemetry" % "opentelemetry-exporter-logging-otlp" % openTelemetryV
val openTelemetrySdk = "io.opentelemetry" % "opentelemetry-sdk" % openTelemetryV
val openTelemetrySemconvIncubating = "io.opentelemetry.semconv" % "opentelemetry-semconv-incubating" % "1.24.0-alpha"
val play = "com.typesafe.play" %% "play" % playV
val play = "org.playframework" %% "play" % "3.0.5"
val play2 = "com.typesafe.play" %% "play" % "2.8.22"
val playJson = "org.playframework" %% "play-json" % "3.0.4"
val play2Json = "com.typesafe.play" %% "play-json" % "2.10.6"
val playReactiveMongo = "org.reactivemongo" %% "play2-reactivemongo" % "1.1.0-play28.RC13"
val playReactiveMongo = "org.reactivemongo" %% "play2-reactivemongo" % "1.1.0-play30.RC13"
val play2ReactiveMongo = "org.reactivemongo" %% "play2-reactivemongo" % "1.1.0-play28.RC13"
val prometheusExporterHttpServer = "io.prometheus" % "prometheus-metrics-exporter-httpserver" % "1.3.2"
val reactiveMongo = "org.reactivemongo" %% "reactivemongo" % "1.1.0-pekko.RC13"
val reactiveMongoBsonApi = "org.reactivemongo" %% "reactivemongo-bson-api" % reactivemongoV
val redisson = "org.redisson" % "redisson" % "3.24.2"
val refined = "eu.timepit" %% "refined" % "0.11.2"
val scalaCollectionCompat = "org.scala-lang.modules" %% "scala-collection-compat" % "2.12.0"
val scalaLogging = "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5"
val scalatestPlay = "org.scalatestplus.play" %% "scalatestplus-play" % "5.1.0" % Test
val scalatestPlay = "org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % Test
val scalatestPlay2 = "org.scalatestplus.play" %% "scalatestplus-play" % "5.1.0" % Test
val sourcecode = "com.lihaoyi" %% "sourcecode" % "0.4.2"
val sttpCore = "com.softwaremill.sttp.client3" %% "core" % sttpV
val sttpSlf4jBackend = "com.softwaremill.sttp.client3" %% "slf4j-backend" % sttpV
Expand Down
41 changes: 38 additions & 3 deletions project/ModulesPlay.scala
Original file line number Diff line number Diff line change
@@ -1,16 +1,47 @@
import Dependencies.Libraries
import sbt.Keys.*
import sbt.{Project, Provided}
import sbt.*

object ModulesPlay {

// play 2.x.x

lazy val errorHandler2Profile: Project => Project = _
.configure(ProjectSettings.commonProfile)
.settings(name := "utils-play2-error-handler")
.settings(libraryDependencies ++= Seq(Libraries.play2 % Provided, Libraries.scalatestPlay2))

lazy val filtersLogging2Profile: Project => Project = _
.configure(ProjectSettings.commonProfile, ProjectSettings.unmanagedSourceProfile("play-2"))
.settings(name := "utils-play2-filters-logging")
.settings(libraryDependencies ++= Seq(Libraries.play2 % Provided, Libraries.scalatestPlay2))

lazy val reactivemongo2Profile: Project => Project = _
.configure(ProjectSettings.commonProfile)
.settings(name := "utils-play2-reactivemongo")
.settings(
libraryDependencies ++=
Seq(
Libraries.play2 % Provided,
Libraries.play2ReactiveMongo % Provided,
Libraries.kamonCore % Provided
)
)

lazy val requestMapContext2Profile: Project => Project = _
.configure(ProjectSettings.commonProfile)
.settings(name := "utils-play2-request-map-context")
.settings(libraryDependencies ++= Seq(Libraries.play2 % Provided))

// play 3.x.x

lazy val errorHandlerProfile: Project => Project = _
.configure(ProjectSettings.commonProfile)
.settings(name := "utils-play-error-handler")
.settings(libraryDependencies ++= Seq(Libraries.play % Provided, Libraries.scalatestPlay))

lazy val filtersLoggingProfile: Project => Project = _
.configure(ProjectSettings.commonProfile)
.configure(ProjectSettings.commonProfile, ProjectSettings.unmanagedSourceProfile("play-3"))
.settings(name := "utils-play-filters-logging")
.settings(libraryDependencies ++= Seq(Libraries.play % Provided, Libraries.scalatestPlay))

Expand All @@ -19,7 +50,11 @@ object ModulesPlay {
.settings(name := "utils-play-reactivemongo")
.settings(
libraryDependencies ++=
Seq(Libraries.play % Provided, Libraries.playReactiveMongo % Provided, Libraries.kamonCore)
Seq(
Libraries.play % Provided,
Libraries.playReactiveMongo % Provided,
Libraries.kamonCore % Provided
)
)

lazy val requestMapContextProfile: Project => Project = _
Expand Down
6 changes: 3 additions & 3 deletions project/ProjectSettings.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ object ProjectSettings {
val scala2_13 = "2.13.15"

val scala2Versions: Seq[String] = Seq(scala2_12, scala2_13)
val scala2_13Versions: Seq[String] = Seq(scala2_13)

lazy val commonProfile: Project => Project = _
.enablePlugins(ScalafixPlugin)
Expand All @@ -35,9 +36,8 @@ object ProjectSettings {
Set(ScalacOptions.privateWarnDeadCode, ScalacOptions.warnNonUnitStatement),
Test / fork := true,
Test / javaOptions += "-Duser.timezone=UTC",
libraryDependencies ++= Seq(Libraries.scalatest.value, Libraries.mockitoScala),
coverageEnabled := true,
coverageHighlighting := true
coverageHighlighting := true,
libraryDependencies ++= Seq(Libraries.scalatest.value, Libraries.mockitoScala)
)

val scalaJsSettings = Seq(Test / fork := false)
Expand Down