Simple SBT server plugin
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.pyscript 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 to
sbt-client.py, add quotes if necessary.
How it works
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
- 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-shellcommand 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)