val scala3: String = "3.6.3" ThisBuild / scalaVersion := scala3 ThisBuild / gsProjectName := "gs-maintainer" ThisBuild / externalResolvers := Seq( "Garrity Software Mirror" at "https://maven.garrity.co/releases", "Garrity Software Releases" at "https://maven.garrity.co/gs" ) lazy val sharedSettings = Seq( scalaVersion := scala3, version := calVer.value, publish / skip := true, publishLocal / skip := true, publishArtifact := false ) val Deps = new { val Cats = new { val Core: ModuleID = "org.typelevel" %% "cats-core" % "2.13.0" val Effect: ModuleID = "org.typelevel" %% "cats-effect" % "3.5.7" } val Fs2 = new { val Core: ModuleID = "co.fs2" %% "fs2-core" % "3.11.0" } val Skunk = new { val Core: ModuleID = "org.tpolecat" %% "skunk-core" % "1.1.0-M3" } val Http4s = new { val Core: ModuleID = "org.http4s" %% "http4s-core" % "1.0.0-M44" val Dsl: ModuleID = "org.http4s" %% "http4s-dsl" % "1.0.0-M44" val EmberServer: ModuleID = "org.http4s" %% "http4s-ember-server" % "1.0.0-M44" } val Gs = new { val Uuid: ModuleID = "gs" %% "gs-uuid-v0" % "0.4.0" val Config: ModuleID = "gs" %% "gs-config-v0" % "0.2.0" val Datagen: ModuleID = "gs" %% "gs-datagen-core-v0" % "0.3.0" } val MUnit: ModuleID = "org.scalameta" %% "munit" % "1.1.0" } lazy val testSettings = Seq( libraryDependencies ++= Seq( Deps.MUnit % Test, Deps.Gs.Datagen % Test ) ) lazy val `gs-maintainer` = project .in(file(".")) .aggregate(model, web, cli) .settings(sharedSettings) .settings(name := s"${gsProjectName.value}") lazy val model = project .in(file("modules/model")) .settings(sharedSettings) .settings(testSettings) .settings(name := s"${gsProjectName.value}-model") .settings( libraryDependencies ++= Seq( Deps.Gs.Uuid, Deps.Cats.Core ) ) lazy val web = project .in(file("modules/web")) .dependsOn(model) .settings(sharedSettings) .settings(testSettings) .settings(name := s"${gsProjectName.value}-web") .settings( libraryDependencies ++= Seq( Deps.Http4s.Core, Deps.Http4s.Dsl, Deps.Http4s.EmberServer ) ) lazy val cli = project .in(file("modules/cli")) .dependsOn(model) .settings(sharedSettings) .settings(testSettings) .settings(name := s"${gsProjectName.value}-cli") .settings( libraryDependencies ++= Seq( ) )