reptile-tail
reptile-tail copied to clipboard
WS middleware server for REPtiLe - a shared REPL
REPtiLe server CLI
A Clojure CLI to the REPtiLe server to expose a shared PREPL
The CLI depends on the the server lib reptile-lib - a server that can be started in various contexts for example the dev env or the CLI.
I have a sister UI project reptile-tongue - a browser based client for REPtiLe.
Usage - standalone mode
In this mode, a PREPL socket server will be started as in process.
The command takes these run time parameters:
http-port - a number above 1024, on which the web server will be exposed
shared-secret - to hand out to clients so that they can connect
$ clojure -A:reptile 8888 warm-blooded-lizards-rock
Usage - connected mode
In this mode, another process is running a PREPL socket server and REPtiLe will connect to it.
The command takes these run time parameters:
http-port - a number above 1024, on which the web server will be exposed
shared-secret - to hand out to clients so that they can connect
socket-host - the host which is running the socket server
socket-port - port number for socket server
$ clojure -A:reptile 8888 warm-blooded-lizards-rock localhost 9075
An example of an application that can be used as the other process in this mode is the add-lib-demo-app
Plan
The first version will be considered feature complete once the server provides
- [X] Shared REPL state
- [X] Shared view of edits in real-time
- [X] Shared REPL history
- [X] Authentication using shared secret
- [X] Dynamic addition of new libraries to the REPL
- [ ] Documentation to explain client / server hosting options
- [ ] Limit user count (2, 3, 4, etc...)
- [ ] Limit users based on user names (jane, joe, mary, etc...)
Planned features
After the initial version these additional features are planned
- [ ] Incremental feedback on long running REPL evaluations
- [ ] Cancel long running REPL evaluations
- [ ] Choice of Java / node runtime REPLs
- [ ] Investigate GraalVM
License
Copyright © 2018 Ray McDermott
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.