diff options
author | Kim Alvefur <zash@zash.se> | 2020-02-19 21:38:00 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2020-02-19 21:38:00 +0100 |
commit | 9a4fe983315802ff15adea3d481718a0e4180be0 (patch) | |
tree | 26cd120985497268e2e83bff10df374c4313d18a /util/startup.lua | |
parent | 2327c841256b8ccd83c9ef35b7a1151b46366b34 (diff) | |
download | prosody-9a4fe983315802ff15adea3d481718a0e4180be0.tar.gz prosody-9a4fe983315802ff15adea3d481718a0e4180be0.zip |
util.startup: Break out command line argument parsing into util.argparse
This will allow using it from other places such as prosodyctl
sub-commands and plugins
Diffstat (limited to 'util/startup.lua')
-rw-r--r-- | util/startup.lua | 54 |
1 files changed, 5 insertions, 49 deletions
diff --git a/util/startup.lua b/util/startup.lua index a799177c..d45855f2 100644 --- a/util/startup.lua +++ b/util/startup.lua @@ -5,6 +5,7 @@ local startup = {}; local prosody = { events = require "util.events".new() }; local logger = require "util.logger"; local log = logger.init("startup"); +local parse_args = require "util.argparse".parse; local config = require "core.configmanager"; local config_warnings; @@ -17,55 +18,10 @@ local short_params = { D = "daemonize", F = "no-daemonize" }; local value_params = { config = true }; function startup.parse_args() - local parsed_opts = {}; - prosody.opts = parsed_opts; - - if #arg == 0 then - return; - end - while true do - local raw_param = arg[1]; - if not raw_param then - break; - end - - local prefix = raw_param:match("^%-%-?"); - if not prefix then - break; - elseif prefix == "--" and raw_param == "--" then - table.remove(arg, 1); - break; - end - local param = table.remove(arg, 1):sub(#prefix+1); - if #param == 1 then - param = short_params[param]; - end - - if not param then - print("Unknown command-line option: "..tostring(param)); - print("Perhaps you meant to use prosodyctl instead?"); - os.exit(1); - 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); - end - else - param_k, param_v = param:match("^([^=]+)=(.+)$"); - if not param_k then - if param:match("^no%-") then - param_k, param_v = param:sub(4), false; - else - param_k, param_v = param, true; - end - end - end - parsed_opts[param_k] = param_v; - end + prosody.opts = parse_args(arg, { + short_params = short_params, + value_params = value_params, + }); end function startup.read_config() |