Simple SBT server plugin
- In
project/plugins.sbt
addSbtPlugin("com.hanhuy.sbt" % "sbt-simple-server" % "0.4")
disablePlugins(SimpleServerPlugin)
if desired, otherwise it will be automatically enabled- Run and use SBT like normal
- Run the
sbt-client.py
script from the project you want to connect to remotely, anything that can be typed into an sbt repl can be typed into passed as an argument tosbt-client.py
, add quotes if necessary.
Inspired by Eugene's writeup at http://eed3si9n.com/sbt-server-reboot, I decided to implement this personally without having to wait for anything to be integrated into SBT. The general idea is the same, except this is even further underengineered.
- Replaces the
shell
command withserver-shell
- Runs a thread to loop over shell input, and runs a thread to read a network port assigned to the project (determined by taking the first 2 bytes of the canonical path hash until one is found that is over 1024)
- Reads input from network and repl and throws it into a blocking queue
- Every time the
server-shell
command is executed, a command is popped off the queue, polling until one is available if necessary. - Commands that come from the network have a result status passed to them to indicate whether they succeeded or failed, (0 for success, 1 for failure, 2 for command in-flight)