aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2020-06-17 19:32:12 +0200
committerKim Alvefur <zash@zash.se>2020-06-17 19:32:12 +0200
commitd8ec3f98bef461a1e04a1c208aef4e18d537f9f9 (patch)
treea85032d49c9675d3137161e91b74a069f52fd72f
parent4e5cc92ac3f293b658838e0faa55645b705e3b48 (diff)
downloadprosody-d8ec3f98bef461a1e04a1c208aef4e18d537f9f9.tar.gz
prosody-d8ec3f98bef461a1e04a1c208aef4e18d537f9f9.zip
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.
-rw-r--r--util/argparse.lua7
-rw-r--r--util/startup.lua12
2 files changed, 13 insertions, 6 deletions
diff --git a/util/argparse.lua b/util/argparse.lua
index 928fc3eb..dde4fcc3 100644
--- a/util/argparse.lua
+++ b/util/argparse.lua
@@ -26,17 +26,14 @@ local function parse(arg, config)
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("^([^=]+)=(.+)$");
diff --git a/util/startup.lua b/util/startup.lua
index 69633c47..0e14395b 100644
--- a/util/startup.lua
+++ b/util/startup.lua
@@ -20,10 +20,20 @@ local short_params = { D = "daemonize", F = "no-daemonize" };
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()