diff options
Diffstat (limited to 'project')
-rw-r--r-- | project/Build.scala | 32 | ||||
-rw-r--r-- | project/plugins.sbt | 4 | ||||
-rw-r--r-- | project/util.scala | 29 |
3 files changed, 29 insertions, 36 deletions
diff --git a/project/Build.scala b/project/Build.scala index c2eaabe..60a3edc 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1,14 +1,21 @@ import sbt._ import sbt.Keys._ -import util._ +import sbt.Project.projectToRef + import play._ import play.PlayImport.PlayKeys._ + import org.scalajs.sbtplugin.ScalaJSPlugin import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._ import com.github.jodersky.mavlink.sbt._ import com.github.jodersky.mavlink.sbt.MavlinkKeys._ +import playscalajs.ScalaJSPlay +import playscalajs.PlayScalaJS.autoImport._ +import com.typesafe.sbt.web.Import._ + + object ApplicationBuild extends Build { //settings common to all projects @@ -18,12 +25,20 @@ object ApplicationBuild extends Build { mavlinkDialect := (baseDirectory in ThisBuild).value / "mavlink" / "concise.xml" ) - lazy val root = Project("root", file(".")).aggregate( - main, - uav, - dashboard + //root super-project + lazy val root = ( + Project("root", file(".")).aggregate( + main, + uav, + dashboard + ) + settings( + //goto main project on load + onLoad in Global := (Command.process("project vfd-main", _: State)) compose (onLoad in Global).value + ) ) + //main play project lazy val main = ( Project("vfd-main", file("vfd-main")) enablePlugins(PlayScala) @@ -31,6 +46,8 @@ object ApplicationBuild extends Build { settings(common: _*) settings( resolvers += Resolver.url("scala-js-releases", url("http://dl.bintray.com/content/scala-js/scala-js-releases"))(Resolver.ivyStylePatterns), + scalaJSProjects := Seq(dashboard), + pipelineStages := Seq(scalaJSProd), libraryDependencies ++= Seq( "org.webjars" % "bootstrap" % "3.3.1", "org.webjars" % "font-awesome" % "4.2.0", @@ -38,9 +55,10 @@ object ApplicationBuild extends Build { ) ) dependsOn(uav) - dependsOnJs(dashboard) + aggregate(projectToRef(dashboard)) ) + //communication backend lazy val uav = ( Project("vfd-uav", file("vfd-uav")) enablePlugins(SbtMavlink) @@ -54,9 +72,11 @@ object ApplicationBuild extends Build { ) ) + //web frontend lazy val dashboard = ( Project("vfd-dashboard", file("vfd-dashboard")) enablePlugins(ScalaJSPlugin) + enablePlugins(ScalaJSPlay) enablePlugins(SbtMavlink) settings(common: _*) settings( diff --git a/project/plugins.sbt b/project/plugins.sbt index 28d80ce..dd05065 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,9 @@ -//resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/", +resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/" addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.8") addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.2") +addSbtPlugin("com.vmunier" % "sbt-play-scalajs" % "0.2.3") + addSbtPlugin("com.github.jodersky" % "sbt-mavlink" % "0.1")
\ No newline at end of file diff --git a/project/util.scala b/project/util.scala deleted file mode 100644 index 4df9127..0000000 --- a/project/util.scala +++ /dev/null @@ -1,29 +0,0 @@ -import sbt._ -import sbt.Keys._ -import play._ -import play.PlayImport.PlayKeys._ -import org.scalajs.sbtplugin.ScalaJSPlugin -import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._ -import com.typesafe.sbt.packager.universal.UniversalKeys - -package object util extends UniversalKeys { - - implicit class ScalaJSPlayProject(val scalajvm: Project) { - - val jsOutputDir = settingKey[File]("Directory for javascript files") - - def dependsOnJs(scalajs: Project): Project = scalajvm.settings( - jsOutputDir := (classDirectory in Compile).value / "public" / "lib", - compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (scalajs, Compile)), - dist <<= dist dependsOn (fullOptJS in (scalajs, Compile)), - stage <<= stage dependsOn (fullOptJS in (scalajs, Compile)), - playMonitoredFiles += (scalaSource in (scalajs, Compile)).value.getCanonicalPath - ).settings( - Seq(packageScalaJSLauncher, fastOptJS, fullOptJS) map { packageJSKey => - crossTarget in (scalajs, Compile, packageJSKey) := jsOutputDir.value - }: _* - ) - - } - -}
\ No newline at end of file |