diff options
-rwxr-xr-x | launch.sh | 2 | ||||
-rw-r--r-- | listener.lua | 40 |
2 files changed, 36 insertions, 6 deletions
@@ -3,4 +3,4 @@ fname="$1" bname="${fname%.lua}" git add .; git commit -m "launch $bname"; git push -echo "$bname" | websocat wss://citrons.xyz/ws-echo/rebecca +# echo "$bname" | websocat wss://citrons.xyz/ws-echo/rebecca diff --git a/listener.lua b/listener.lua index 1419f99..7560da6 100644 --- a/listener.lua +++ b/listener.lua @@ -1,6 +1,24 @@ local pm = require'pm' local ws = assert(http.websocket("wss://citrons.xyz/ws-echo/rebecca")) +local function splitw(str) + local res = {} + for s in str:gmatch("%S+") do + table.insert(res, s) + end + return res +end + +local ops = {} +function ops.deploy(pkgname) + pm.cc() + pm.dl(pkgname) + shell.run('bg '..pkgname) +end +function ops.test() + print("hello world") +end + function main() print("listening") while true do @@ -8,11 +26,23 @@ function main() local parsed = assert(textutils.unserializeJSON(msg)) if parsed.msg then print("got msg",parsed.msg) - -- more sophisticated cmds later, maybe - local pkgname = parsed.msg:gsub("%s","") - pm.cc() - pm.dl(pkgname) - shell.run('bg '..pkgname) + local words = splitw(parsed.msg) + if words[1] ~= "RRP" then + print("non-RRP message!") + else + local target = words[2] + local mylabel = os.computerLabel() + if not (target == mylabel or target == "*") + print("not for me") + else + local op = words[3] + if ops[op] then + ops[op](unpack(args,4)) + else + print("unknown op "..op) + end + end + end end end end |