val scala3: String = "3.8.4" ThisBuild / scalaVersion := scala3 ThisBuild / gsProjectName := "fizzbuzz" 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.7.0" } val Fs2 = new { private val Version: String = "3.13.0" val Core: ModuleID = "co.fs2" %% "fs2-core" % Version val IO: ModuleID = "co.fs2" %% "fs2-io" % Version } val Gs = new { val Std: ModuleID = "gs" %% "gs-std-core-v0" % "0.1.3" val Datagen: ModuleID = "gs" %% "gs-datagen-core-v0" % "0.4.1" } val MUnit: ModuleID = "org.scalameta" %% "munit" % "1.3.0" } lazy val testSettings = Seq( libraryDependencies ++= Seq( Deps.MUnit % Test, Deps.Gs.Datagen % Test ) ) lazy val fizzbuzz = project .in(file(".")) .settings(sharedSettings) .settings(testSettings) .settings(name := s"${gsProjectName.value}") .settings(fork := true) .settings( libraryDependencies ++= Seq( Deps.Cats.Core, Deps.Cats.Effect, Deps.Fs2.Core ) )