comparison plugins/mod_pubsub/mod_pubsub.lua @ 13585:8091c1b8023e

mod_pubsub: Expand shell commands to include node/item management
author Matthew Wild <mwild1@gmail.com>
date Tue, 07 Jan 2025 14:27:18 +0000
parents eae0272b87e3
children 0338a5569178
comparison
equal deleted inserted replaced
13584:0f265142117a 13585:8091c1b8023e
272 272
273 local function get_service(service_jid) 273 local function get_service(service_jid)
274 return assert(assert(prosody.hosts[service_jid], "Unknown pubsub service").modules.pubsub, "Not a pubsub service").service; 274 return assert(assert(prosody.hosts[service_jid], "Unknown pubsub service").modules.pubsub, "Not a pubsub service").service;
275 end 275 end
276 276
277 module:add_item("shell-command", { 277 module:require("commands").add_commands(get_service);
278 section = "pubsub";
279 section_desc = "Manage publish/subscribe nodes";
280 name = "create_node";
281 desc = "Create a node with the specified name";
282 args = {
283 { name = "service_jid", type = "string" };
284 { name = "node_name", type = "string" };
285 };
286 host_selector = "service_jid";
287
288 handler = function (self, service_jid, node_name) --luacheck: ignore 212/self
289 return get_service(service_jid):create(node_name, true);
290 end;
291 });
292
293 module:add_item("shell-command", {
294 section = "pubsub";
295 section_desc = "Manage publish/subscribe nodes";
296 name = "list_nodes";
297 desc = "List nodes on a pubsub service";
298 args = {
299 { name = "service_jid", type = "string" };
300 };
301 host_selector = "service_jid";
302
303 handler = function (self, service_jid) --luacheck: ignore 212/self
304 -- luacheck: ignore 431/service
305 local service = get_service(service_jid);
306 local nodes = select(2, assert(service:get_nodes(true)));
307 local count = 0;
308 for node_name in pairs(nodes) do
309 count = count + 1;
310 self.session.print(node_name);
311 end
312 return true, ("%d nodes"):format(count);
313 end;
314 });