mod_console: Add module:list() command to show modules loaded on a host

Mon, 05 Oct 2009 14:40:01 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 05 Oct 2009 14:40:01 +0100
changeset 1919
b641068d61a9
parent 1918
dd35d07d673f
child 1920
c06945b9cc52

mod_console: Add module:list() command to show modules loaded on a host

plugins/mod_console.lua file | annotate | diff | comparison | revisions
--- a/plugins/mod_console.lua	Mon Oct 05 14:38:04 2009 +0100
+++ b/plugins/mod_console.lua	Mon Oct 05 14:40:01 2009 +0100
@@ -318,6 +318,31 @@
 	return ok, (ok and "Module reloaded on "..count.." host"..(count ~= 1 and "s" or "")) or ("Last error: "..tostring(err));
 end
 
+function def_env.module:list(hosts)
+	if hosts == nil then
+		hosts = array.collect(keys(prosody.hosts));
+	end
+	if type(hosts) == "string" then
+		hosts = { hosts };
+	end
+	if type(hosts) ~= "table" then
+		return false, "Please supply a host or a list of hosts you would like to see";
+	end
+	
+	local print = self.session.print;
+	for _, host in ipairs(hosts) do
+		print(host..":");
+		local modules = array.collect(keys(prosody.hosts[host].modules or {})):sort();
+		if #modules == 0 then
+			print("    No modules loaded");
+		else
+			for _, name in ipairs(modules) do
+				print("    "..name);
+			end
+		end
+	end
+end
+
 def_env.config = {};
 function def_env.config:load(filename, format)
 	local config_load = require "core.configmanager".load;

mercurial