summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Tache <hadesgames@gmail.com>2014-04-06 18:15:18 +0300
committerAlexandru Tache <hadesgames@gmail.com>2014-04-06 18:15:18 +0300
commit74073a0d3b69056e06ea936c9bfbef882b0f8516 (patch)
treeea0ef541a54287108390fcf1e7a551c80913a510
parent8bda8e06ef8c5e58fe39a23bead814d0175f5b4c (diff)
downloadworkbench-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.scala9
-rw-r--r--workbench_template.js10
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() {