diff options
-rw-r--r-- | Plugin.scala | 17 | ||||
-rw-r--r-- | build.sbt | 12 | ||||
-rw-r--r-- | readme.md | 2 | ||||
-rw-r--r-- | workbench_template.js (renamed from workbench_template.ts) | 0 |
4 files changed, 15 insertions, 16 deletions
diff --git a/Plugin.scala b/Plugin.scala index 0d18d2f..c7d3bf3 100644 --- a/Plugin.scala +++ b/Plugin.scala @@ -2,7 +2,7 @@ package com.lihaoyi.workbench import akka.actor.{ActorRef, Actor, ActorSystem} import scala.concurrent.duration._ -import java.nio.file.{Paths} + import play.api.libs.json.Json import sbt._ import Keys._ @@ -19,6 +19,7 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ config = ConfigFactory.load(ActorSystem.getClass.getClassLoader), classLoader = ActorSystem.getClass.getClassLoader ) + 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") @@ -44,15 +45,16 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ // a new actor waiting replaces the old one waitingActor = Some(a) case (a: ActorRef, None, msgs) => - respond(a, "[" + msgs.mkString(",") + "]") + + respond(a, JsArray(msgs).toString) queuedMessages = Nil case (msg: JsArray, None, msgs) => queuedMessages = msg :: msgs case (msg: JsArray, Some(a), Nil) => - respond(a, "[" + msg + "]") + respond(a, Json.arr(msg).toString) waitingActor = None case (Clear, Some(a), Nil) => - respond(a, "[]") + respond(a, Json.arr().toString) waitingActor = None } }) @@ -83,11 +85,10 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ streams.value.log.info("workbench: Checking " + x.getName) FileFunction.cached(streams.value.cacheDirectory / x.getName, FilesInfo.lastModified, FilesInfo.lastModified){ (f: Set[File]) => streams.value.log.info("workbench: Refreshing " + x.getName) - val cwd = Paths.get(new File("").getAbsolutePath) - val filePath = Paths.get(f.head.getAbsolutePath) + pubSub ! Json.arr( "run", - "/" + cwd.relativize(filePath).toString, + "/" + f.head.getAbsolutePath.drop(new File("").getAbsolutePath.length), bootSnippet.value ) f @@ -100,7 +101,7 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ complete{ IO.readStream( getClass.getClassLoader - .getResourceAsStream("workbench_template.ts") + .getResourceAsStream("workbench_template.js") ).replace("<host>", localUrl.value._1) .replace("<port>", localUrl.value._2.toString) .replace("<bootSnippet>", bootSnippet.value) @@ -2,7 +2,7 @@ import sbt.Keys._ name := "workbench" -version := "0.1.1" +version := "0.1.2" organization := "com.lihaoyi" @@ -12,7 +12,7 @@ sbtPlugin := true publishArtifact in Test := false publishTo <<= version { (v: String) => - Some("releases" at "https://oss.sonatype.org/service/local/staging/deploy/maven2") + Some("releases" at "https://oss.sonatype.org/service/local/staging/deploy/maven2") } pomExtra := ( @@ -36,15 +36,13 @@ pomExtra := ( </developers> ) -(resources in Compile) := {(resources in Compile).value ++ (baseDirectory.value * "*.ts").get} - -resolvers += "spray repo" at "http://repo.spray.io" +(resources in Compile) := {(resources in Compile).value ++ (baseDirectory.value * "*.js").get} resolvers += "typesafe" at "http://repo.typesafe.com/typesafe/releases/" libraryDependencies ++= Seq( - "io.spray" % "spray-can" % "1.3.0", - "io.spray" % "spray-routing" % "1.3.0", + "io.spray" % "spray-can" % "1.3.1", + "io.spray" % "spray-routing" % "1.3.1", "com.typesafe.akka" %% "akka-actor" % "2.3.0", "com.typesafe.play" %% "play-json" % "2.2.2" ) @@ -15,7 +15,7 @@ To Use ------ - Clone this from Github into a local directory -- Add a `addSbtPlugin("com.lihaoyi" % "workbench" % "0.1.1")` to your `project/build.sbt` +- Add a `addSbtPlugin("com.lihaoyi" % "workbench" % "0.1.2")` to your `project/build.sbt` - Add `workbenchSettings` to your project settings in `build.sbt`: ```scala diff --git a/workbench_template.ts b/workbench_template.js index f9c016c..f9c016c 100644 --- a/workbench_template.ts +++ b/workbench_template.js |