diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-08-10 17:35:01 -0700 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-08-10 17:35:01 -0700 |
commit | 9598c2638ec98b6a2e4ea5a022dff0f9bbe73039 (patch) | |
tree | 96994015107e5a8f915fb5e8281e32ed6c48aecc | |
parent | 7c3bf500f086bd741703f3c5c87d7a74dd01703c (diff) | |
download | workbench-9598c2638ec98b6a2e4ea5a022dff0f9bbe73039.tar.gz workbench-9598c2638ec98b6a2e4ea5a022dff0f9bbe73039.tar.bz2 workbench-9598c2638ec98b6a2e4ea5a022dff0f9bbe73039.zip |
Correctly kill the server on unload, making the sbt `reload` command work as well as auto-importing into IntelliJ
-rw-r--r-- | Plugin.scala | 24 | ||||
-rw-r--r-- | Server.scala | 3 |
2 files changed, 7 insertions, 20 deletions
diff --git a/Plugin.scala b/Plugin.scala index 512e195..81359a5 100644 --- a/Plugin.scala +++ b/Plugin.scala @@ -1,22 +1,10 @@ package com.lihaoyi.workbench -import akka.actor.{ActorRef, Actor, ActorSystem} -import scala.concurrent.duration._ - - import sbt._ import Keys._ -import akka.actor.ActorDSL._ -import com.typesafe.config.ConfigFactory import upickle._ -import spray.http.{AllOrigins, HttpResponse} -import spray.routing.SimpleRoutingApp -import spray.http.HttpHeaders.`Access-Control-Allow-Origin` - object Plugin extends sbt.Plugin { - - val refreshBrowsers = taskKey[Unit]("Sends a message to all connected web pages asking them to refresh the page") val updateBrowsers = taskKey[Unit]("partially resets some of the stuff in the browser") val localUrl = settingKey[(String, Int)]("localUrl") @@ -83,14 +71,10 @@ object Plugin extends sbt.Plugin { } } }, - server := { - new Server(localUrl.value._1, localUrl.value._2, bootSnippet.value) - }, - onLoad := { state => - state - }, - onUnload := { state => + server := new Server(localUrl.value._1, localUrl.value._2, bootSnippet.value), + (onUnload in Global) := { (onUnload in Global).value.compose{ state => + server.value.kill() state - } + }} ) } diff --git a/Server.scala b/Server.scala index af4b6b6..b9773a7 100644 --- a/Server.scala +++ b/Server.scala @@ -74,4 +74,7 @@ class Server(url: String, port: Int, bootSnippet: String) extends SimpleRoutingA def msg[T: Writer](t: T) = { pubSub ! upickle.writeJs(t) } + def kill() = { + system.shutdown() + } }
\ No newline at end of file |