diff options
author | Alexandru Tache <hadesgames@gmail.com> | 2014-04-06 18:15:18 +0300 |
---|---|---|
committer | Alexandru Tache <hadesgames@gmail.com> | 2014-04-06 18:15:18 +0300 |
commit | 74073a0d3b69056e06ea936c9bfbef882b0f8516 (patch) | |
tree | ea0ef541a54287108390fcf1e7a551c80913a510 | |
parent | 8bda8e06ef8c5e58fe39a23bead814d0175f5b4c (diff) | |
download | workbench-74073a0d3b69056e06ea936c9bfbef882b0f8516.tar.gz workbench-74073a0d3b69056e06ea936c9bfbef882b0f8516.tar.bz2 workbench-74073a0d3b69056e06ea936c9bfbef882b0f8516.zip |
Added more settings keys:
reloadPrefix - Specify the address from which the javascript files
should be reloaded
javascriptUrlGenerator - Specify a function that transforms the file
path of a js file into an url
-rw-r--r-- | Plugin.scala | 9 | ||||
-rw-r--r-- | workbench_template.js | 10 |
2 files changed, 17 insertions, 2 deletions
diff --git a/Plugin.scala b/Plugin.scala index c7d3bf3..d56090f 100644 --- a/Plugin.scala +++ b/Plugin.scala @@ -25,6 +25,8 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ val localUrl = settingKey[(String, Int)]("localUrl") private[this] val routes = settingKey[Unit]("local websocket server") val bootSnippet = settingKey[String]("piece of javascript to make things happen") + val reloadPrefix = settingKey[Option[String]]("Use this if you want the javascript to be reloaded from a specific address") + val javascriptUrlGenerator = settingKey[String => String]("Transform the javascript filepath to a server url") val pubSub = actor(new Actor{ var waitingActor: Option[ActorRef] = None @@ -61,6 +63,8 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ val workbenchSettings = Seq( localUrl := ("localhost", 12345), + reloadPrefix := None, + javascriptUrlGenerator := {s => s}, extraLoggers := { val clientLogger = FullLogger{ @@ -86,9 +90,11 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ FileFunction.cached(streams.value.cacheDirectory / x.getName, FilesInfo.lastModified, FilesInfo.lastModified){ (f: Set[File]) => streams.value.log.info("workbench: Refreshing " + x.getName) + val fsPath = f.head.getAbsolutePath.drop(new File("").getAbsolutePath.length) + pubSub ! Json.arr( "run", - "/" + f.head.getAbsolutePath.drop(new File("").getAbsolutePath.length), + "/" + javascriptUrlGenerator.value(fsPath), bootSnippet.value ) f @@ -105,6 +111,7 @@ object Plugin extends sbt.Plugin with SimpleRoutingApp{ ).replace("<host>", localUrl.value._1) .replace("<port>", localUrl.value._2.toString) .replace("<bootSnippet>", bootSnippet.value) + .replace("<reloadPrefix>", reloadPrefix.value.getOrElse("")) } } ~ getFromDirectory(".") diff --git a/workbench_template.js b/workbench_template.js index f9c016c..ff4c3a4 100644 --- a/workbench_template.js +++ b/workbench_template.js @@ -1,6 +1,7 @@ (function(){ var shadowBody = null var bootSnippet = "<bootSnippet>" + var reloadPrefix = "<reloadPrefix>" window.onload = function(){ shadowBody = document.body.cloneNode(true) } @@ -41,7 +42,14 @@ if (data[0] == "run"){ var tag = document.createElement("script") var loaded = false - tag.setAttribute("src", "http://<host>:<port>" + data[1]) + var serverPrefix + + if (reloadPrefix === "") + serverPrefix = "http://<host>:<port>" + else + serverPrefix = reloadPrefix + tag.setAttribute("src", serverPrefix + data[1]) + var bootSnippet = data[2] if (bootSnippet){ tag.onreadystatechange = tag.onload = function() { |