Changeset

10936:d770435f0f84

util.argparse: Move exiting and error to util.startup It's not so nice to have a library that exits the entire application from under you, so this and the error reporting belongs in util.startup. The argparse code was originally in util.startup but moved out in 1196f1e8d178 but the error handling should have stayed.
author Kim Alvefur <zash@zash.se>
date Wed, 17 Jun 2020 19:32:12 +0200
parents 10935:2d57c49bfa12
children 10937:d86f59c31458
files util/argparse.lua util/startup.lua
diffstat 2 files changed, 13 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/util/argparse.lua	Mon Jun 15 14:23:47 2020 +0100
+++ b/util/argparse.lua	Wed Jun 17 19:32:12 2020 +0200
@@ -26,17 +26,14 @@
 		end
 
 		if not param then
-			print("Unknown command-line option: "..tostring(param));
-			print("Perhaps you meant to use prosodyctl instead?");
-			os.exit(1);
+			return nil, "param-not-found", param;
 		end
 
 		local param_k, param_v;
 		if value_params[param] then
 			param_k, param_v = param, table.remove(arg, 1);
 			if not param_v then
-				print("Expected a value to follow command-line option: "..raw_param);
-				os.exit(1);
+				return nil, "missing-value", raw_param;
 			end
 		else
 			param_k, param_v = param:match("^([^=]+)=(.+)$");
--- a/util/startup.lua	Mon Jun 15 14:23:47 2020 +0100
+++ b/util/startup.lua	Wed Jun 17 19:32:12 2020 +0200
@@ -20,10 +20,20 @@
 local value_params = { config = true };
 
 function startup.parse_args()
-	prosody.opts = parse_args(arg, {
+	local opts, err, where = parse_args(arg, {
 			short_params = short_params,
 			value_params = value_params,
 		});
+	if not opts then
+		if err == "param-not-found" then
+			print("Unknown command-line option: "..tostring(where));
+			print("Perhaps you meant to use prosodyctl instead?");
+		elseif err == "missing-value" then
+			print("Expected a value to follow command-line option: "..where);
+		end
+		os.exit(1);
+	end
+	prosody.opts = opts;
 end
 
 function startup.read_config()