val VersionSuffix = Option(System.getenv("VERSION_SUFFIX")).getOrElse("") lazy val root = project.in(file(".")) .aggregate( plugin, libraryJvm, libraryJs, playPlugin, //openapiPlugin ).settings( crossScalaVersions := Nil, publish / skip := true, ) def commonSettings = Seq( organization := "com.tflucke", //maintainer := "Thomas Flucke ", scalacOptions ++= Seq( "-deprecation", "-unchecked", "-feature" ), crossScalaVersions := Seq("3.1.0", "2.12.11", "2.12.10") ) /****** The Actual Plugin ******/ lazy val plugin = (project in file("plugin")) .enablePlugins(SbtPlugin) .settings(commonSettings) .settings( addSbtPlugin("org.portable-scala" % "sbt-platform-deps" % "1.0.0"), name := "sbt-rest-rpc", version := s"0.3.1$VersionSuffix", Compile / resourceGenerators += Def.task { val file = (Compile / resourceManaged).value / "version.txt" IO.write(file, (libraryJvm / version).value) Seq(file) }.taskValue, publishLocal := (publishLocal dependsOn (libraryJvm / publishLocal) dependsOn (libraryJs / publishLocal) ).value ).dependsOn(libraryJvm) .dependsOn(libraryJs) /****** The Plugin Library ******/ lazy val library = crossProject(JSPlatform, JVMPlatform) .in(file("library")) .settings(commonSettings) .settings( name := "rest-rpc", version := s"0.3.1$VersionSuffix", crossScalaVersions += "2.13.3" ) .jvmSettings( libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.0", libraryDependencies += "org.scalaj" %% "scalaj-http" % "2.4.2" ) .jsSettings( libraryDependencies ++= (if (scalaJSVersion.startsWith("0.6.")) Seq( // Wrapper library for JS dom to scala // Docs: https://scala-js.github.io/scala-js-dom/ // Scaladocs: https://www.javadoc.io/doc/org.scala-js/scalajs-dom_sjs1.0.0-M7_2.12/0.9.6/org/scalajs/dom/index.html "org.scala-js" %%% "scalajs-dom" % "0.9.8", "com.typesafe.play" %%% "play-json" % "2.8.1" ) else Seq( "org.scala-js" %%% "scalajs-dom" % "1.2.0", "com.typesafe.play" %%% "play-json" % "2.9.0" )) ) lazy val libraryJvm = library.jvm lazy val libraryJs = library.js /******* The Play Plugin *******/ lazy val playPlugin = (project in file("play")) .enablePlugins(SbtPlugin) .settings(commonSettings) .settings( addSbtPlugin("com.tflucke" % "sbt-rest-rpc" % "0.3.1-SNAPSHOT"), name := "sbt-rest-rpc-play", version := s"0.3.1$VersionSuffix", libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % Test, logBuffered in Test := false, scriptedLaunchOpts := { scriptedLaunchOpts.value ++ Seq( "-Xmx1024M", "-Dplugin.version="+version.value, ) }, scriptedBufferLog := false, publishLocal := (publishLocal dependsOn (plugin / publishLocal)).value ).dependsOn(plugin) /******* The OpenAPI Plugin *******/ lazy val openapiPlugin = (project in file("openapi")) .enablePlugins(SbtPlugin) .settings(commonSettings) .settings( addSbtPlugin("com.tflucke" % "sbt-rest-rpc" % "0.3.1-SNAPSHOT"), name := "sbt-rest-rpc-openapi", version := s"0.3.1$VersionSuffix", libraryDependencies ++= Seq( "io.swagger.parser.v3" % "swagger-parser" % "2.0.22", "org.scalatest" %% "scalatest" % "3.0.8" % Test ), logBuffered in Test := false, scriptedLaunchOpts := { scriptedLaunchOpts.value ++ Seq( "-Xmx1024M", "-Dplugin.version="+version.value, ) }, scriptedBufferLog := false, publishLocal := (publishLocal dependsOn (plugin / publishLocal)).value ).dependsOn(plugin)