summaryrefslogtreecommitdiff
path: root/listener.lua
diff options
context:
space:
mode:
Diffstat (limited to 'listener.lua')
-rw-r--r--listener.lua40
1 files changed, 35 insertions, 5 deletions
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