Diff

plugins/mod_console.lua @ 1908:27c1c6e6c583

Merge with 0.5
author Matthew Wild <mwild1@gmail.com>
date Mon, 05 Oct 2009 14:42:56 +0100
parent 1823:7c3ec7ac6316
parent 1907:1dd4443e7d93
child 1914:e7f6baf39b56
line wrap: on
line diff
--- a/plugins/mod_console.lua	Mon Oct 05 10:10:53 2009 +0100
+++ b/plugins/mod_console.lua	Mon Oct 05 14:42:56 2009 +0100
@@ -183,6 +183,7 @@
 		print [[module:load(module, host) - Load the specified module on the specified host (or all hosts if none given)]]
 		print [[module:reload(module, host) - The same, but unloads and loads the module (saving state if the module supports it)]]
 		print [[module:unload(module, host) - The same, but just unloads the module from memory]]
+		print [[module:list(host) - List the modules loaded on the specified host]]
 	elseif section == "server" then
 		print [[server:version() - Show the server's version number]]
 		print [[server:uptime() - Show how long the server has been running]]
@@ -327,6 +328,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;