Mercurial > prosody-hg
comparison util/startup.lua @ 10596:cb107ea49b35 0.11
util.startup: Add startup step for parsing command-line options
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 19 Jan 2020 15:26:22 +0000 |
| parents | 82705ec87253 |
| children | 25a3c8134b0a |
comparison
equal
deleted
inserted
replaced
| 10581:10d6d0d91f4e | 10596:cb107ea49b35 |
|---|---|
| 9 local config = require "core.configmanager"; | 9 local config = require "core.configmanager"; |
| 10 | 10 |
| 11 local dependencies = require "util.dependencies"; | 11 local dependencies = require "util.dependencies"; |
| 12 | 12 |
| 13 local original_logging_config; | 13 local original_logging_config; |
| 14 | |
| 15 local short_params = { D = "daemonize", F = "no-daemonize" }; | |
| 16 local value_params = { config = true }; | |
| 17 | |
| 18 function startup.parse_args() | |
| 19 local parsed_opts = {}; | |
| 20 | |
| 21 if #arg > 0 and arg[1] ~= "--config" then | |
| 22 while true do | |
| 23 local raw_param = arg[1]; | |
| 24 if not raw_param then | |
| 25 break; | |
| 26 end | |
| 27 | |
| 28 local prefix = raw_param:match("^%-%-?"); | |
| 29 if not prefix then | |
| 30 break; | |
| 31 elseif prefix == "--" and raw_param == "--" then | |
| 32 table.remove(arg, 1); | |
| 33 break; | |
| 34 end | |
| 35 local param = table.remove(arg, 1):sub(#prefix+1); | |
| 36 if #param == 1 then | |
| 37 param = short_params[param]; | |
| 38 end | |
| 39 | |
| 40 if not param then | |
| 41 print("Unknown command-line option: "..tostring(param)); | |
| 42 print("Perhaps you meant to use prosodyctl instead?"); | |
| 43 os.exit(1); | |
| 44 end | |
| 45 | |
| 46 local param_k, param_v; | |
| 47 if value_params[param] then | |
| 48 param_k, param_v = param, table.remove(arg, 1); | |
| 49 if not param_v then | |
| 50 print("Expected a value to follow command-line option: "..raw_param); | |
| 51 os.exit(1); | |
| 52 end | |
| 53 else | |
| 54 param_k, param_v = param:match("^([^=]+)=(.+)$"); | |
| 55 if not param_k then | |
| 56 if param:match("^no%-") then | |
| 57 param_k, param_v = param:sub(4), false; | |
| 58 else | |
| 59 param_k, param_v = param, true; | |
| 60 end | |
| 61 end | |
| 62 end | |
| 63 parsed_opts[param_k] = param_v; | |
| 64 end | |
| 65 end | |
| 66 prosody.opts = parsed_opts; | |
| 67 end | |
| 14 | 68 |
| 15 function startup.read_config() | 69 function startup.read_config() |
| 16 local filenames = {}; | 70 local filenames = {}; |
| 17 | 71 |
| 18 local filename; | 72 local filename; |
