import Dependencies._ def scala211 = "2.11.12" def scala212 = "2.12.8" def scala213 = "2.13" name := "stasis" inThisBuild( List( organization := "io.stasis", homepage := Some(url("https://github.com/stasis/stasis")), licenses := List( "Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0"), "ASM" -> url("https://asm.ow2.io/license.html") ), developers := List( Developer( "gburd", "Gregory Burd", "greg@burd.me", url("https://greg.burd.me") ) ), scalaVersion := scala213, crossScalaVersions := List(scala213, scala212, scala211), resolvers += Resolver.sonatypeRepo("releases"), libraryDependencies ++= List( scalatest.value % Test, scalacheck % Test, scalametaTestkit % Test ) ) ) skip in publish := true commands += Command.command("ci-test") { s => val scalaVersion = sys.env.get("TEST") match { case Some("2.11") => scala211 case Some("2.12") => scala212 case _ => scala213 } val docsTest = if (scalaVersion == scala213) "docs/run" else "version" s"++$scalaVersion" :: s"tests/test" :: s"coreJS/test" :: docsTest :: s } lazy val core = project .in(file("stasis-core")) .settings( moduleName := "stasis-core", description := "Implementation of Stasis", buildInfoSettings, buildInfoPackage := "io.stasis", buildInfoObject := "BuildInfo", libraryDependencies ++= List( scalatest.value % Test, scalametaTestkit % Test ) ) .enablePlugins(BuildInfoPlugin) lazy val cli = project .in(file("stasis-cli")) .settings( moduleName := "stasis-cli", mainClass in assembly := Some("io.stasis.cli.Cli"), assemblyJarName.in(assembly) := "stasis.jar", libraryDependencies ++= Seq( "com.googlecode.java-diff-utils" % "diffutils" % "1.3.0", "com.martiansoftware" % "nailgun-server" % "0.9.1", "com.github.scopt" %% "scopt" % "3.5.0", // undeclared transitive dependency of coursier-small "org.scala-lang.modules" %% "scala-xml" % "1.1.1" ), scalacOptions ++= { CrossVersion.partialVersion(scalaVersion.value) match { case Some((2, 11)) => Seq("-target:jvm-1.8") case Some((2, 12)) => Seq("-target:jvm-1.8") case Some((2, 13)) => Seq("-target:jvm-1.8") case _ => Seq.empty } } ) .dependsOn(core) val V = "\\d+\\.\\d+\\.\\d+" val ReleaseCandidate = s"($V-RC\\d+).*".r val Milestone = s"($V-M\\d+).*".r lazy val stableVersion = Def.setting { version.in(ThisBuild).value.replaceAll("\\+.*", "") } lazy val buildInfoSettings: Seq[Def.Setting[_]] = Seq( buildInfoKeys := Seq[BuildInfoKey]( name, version, "scalameta" -> scalametaV, "nightly" -> version.value, "stable" -> stableVersion.value, "scala" -> scalaVersion.value, "scala211" -> scala211, "coursier" -> coursier, "commit" -> sys.process.Process("git rev-parse HEAD").lineStream_!.head, "timestamp" -> System.currentTimeMillis().toString, scalaVersion, sbtVersion ), buildInfoPackage := "io.stasis", buildInfoObject := "Versions" )