From b5c9d4bca3d329df0ade020d1b24a99a1cd118d8 Mon Sep 17 00:00:00 2001 From: ubq323 Date: Mon, 1 Apr 2024 02:08:51 +0100 Subject: launch --- listener.lua | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'listener.lua') 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 -- cgit v1.2.3