aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
Diffstat (limited to 'project')
-rw-r--r--project/Build.scala32
-rw-r--r--project/plugins.sbt4
-rw-r--r--project/util.scala29
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