mod_invites: Show help if --help passed instead of hostname
authorKim Alvefur <zash@zash.se>
Sat, 13 Jan 2024 10:59:04 +0100
changeset 13415 d815882d2692
parent 13414 7efdd143fdfc
child 13416 0e96d6a29a12
mod_invites: Show help if --help passed instead of hostname Because I couldn't guess the right way to get the help message without reading the source twice.
plugins/mod_invites.lua
--- a/plugins/mod_invites.lua	Sat Jan 13 10:58:12 2024 +0100
+++ b/plugins/mod_invites.lua	Sat Jan 13 10:59:04 2024 +0100
@@ -249,24 +249,7 @@
 end
 
 function subcommands.generate(arg)
-
-	local sm = require "prosody.core.storagemanager";
-	local mm = require "prosody.core.modulemanager";
-
-	local host = table.remove(arg, 1); -- pop host
-	assert(prosody.hosts[host], "Host "..tostring(host).." does not exist");
-	sm.initialize_host(host);
-	module.host = host; --luacheck: ignore 122/module
-	token_storage = module:open_store("invite_token", "map");
-
-	local opts = argparse.parse(arg, {
-		short_params = { h = "help"; ["?"] = "help"; g = "group" };
-		value_params = { group = true; reset = true; role = true };
-		array_params = { group = true; role = true };
-	});
-
-
-	if opts.help then
+	local function help()
 		print("usage: prosodyctl mod_" .. module.name .. " generate DOMAIN --reset USERNAME")
 		print("usage: prosodyctl mod_" .. module.name .. " generate DOMAIN [--admin] [--role ROLE] [--group GROUPID]...")
 		print()
@@ -292,6 +275,30 @@
 		return 2
 	end
 
+	local earlyopts = argparse.parse(arg, { short_params = { h = "help"; ["?"] = "help" } });
+	if earlyopts.help or next(earlyopts) ~= nil then
+		return help();
+	end
+
+	local sm = require "prosody.core.storagemanager";
+	local mm = require "prosody.core.modulemanager";
+
+	local host = table.remove(arg, 1); -- pop host
+	assert(prosody.hosts[host], "Host "..tostring(host).." does not exist");
+	sm.initialize_host(host);
+	module.host = host; --luacheck: ignore 122/module
+	token_storage = module:open_store("invite_token", "map");
+
+	local opts = argparse.parse(arg, {
+		short_params = { h = "help"; ["?"] = "help"; g = "group" };
+		value_params = { group = true; reset = true; role = true };
+		array_params = { group = true; role = true };
+	});
+
+	if opts.help then
+		return help();
+	end
+
 	-- Load mod_invites
 	local invites = module:depends("invites");
 	-- Optional community module that if used, needs to be loaded here