16 local value_params = { config = true }; |
16 local value_params = { config = true }; |
17 |
17 |
18 function startup.parse_args() |
18 function startup.parse_args() |
19 local parsed_opts = {}; |
19 local parsed_opts = {}; |
20 |
20 |
21 if #arg > 0 and arg[1] ~= "--config" then |
21 if #arg == 0 then |
22 while true do |
22 return; |
23 local raw_param = arg[1]; |
23 end |
24 if not raw_param then |
24 while true do |
25 break; |
25 local raw_param = arg[1]; |
26 end |
26 if not raw_param then |
27 |
27 break; |
28 local prefix = raw_param:match("^%-%-?"); |
28 end |
29 if not prefix then |
29 |
30 break; |
30 local prefix = raw_param:match("^%-%-?"); |
31 elseif prefix == "--" and raw_param == "--" then |
31 if not prefix then |
32 table.remove(arg, 1); |
32 break; |
33 break; |
33 elseif prefix == "--" and raw_param == "--" then |
34 end |
34 table.remove(arg, 1); |
35 local param = table.remove(arg, 1):sub(#prefix+1); |
35 break; |
36 if #param == 1 then |
36 end |
37 param = short_params[param]; |
37 local param = table.remove(arg, 1):sub(#prefix+1); |
38 end |
38 if #param == 1 then |
39 |
39 param = short_params[param]; |
40 if not param then |
40 end |
41 print("Unknown command-line option: "..tostring(param)); |
41 |
42 print("Perhaps you meant to use prosodyctl instead?"); |
42 if not param then |
|
43 print("Unknown command-line option: "..tostring(param)); |
|
44 print("Perhaps you meant to use prosodyctl instead?"); |
|
45 os.exit(1); |
|
46 end |
|
47 |
|
48 local param_k, param_v; |
|
49 if value_params[param] then |
|
50 param_k, param_v = param, table.remove(arg, 1); |
|
51 if not param_v then |
|
52 print("Expected a value to follow command-line option: "..raw_param); |
43 os.exit(1); |
53 os.exit(1); |
44 end |
54 end |
45 |
55 else |
46 local param_k, param_v; |
56 param_k, param_v = param:match("^([^=]+)=(.+)$"); |
47 if value_params[param] then |
57 if not param_k then |
48 param_k, param_v = param, table.remove(arg, 1); |
58 if param:match("^no%-") then |
49 if not param_v then |
59 param_k, param_v = param:sub(4), false; |
50 print("Expected a value to follow command-line option: "..raw_param); |
60 else |
51 os.exit(1); |
61 param_k, param_v = param, true; |
52 end |
62 end |
53 else |
63 end |
54 param_k, param_v = param:match("^([^=]+)=(.+)$"); |
64 end |
55 if not param_k then |
65 parsed_opts[param_k] = param_v; |
56 if param:match("^no%-") then |
66 print("ARG", param_k, param_v); |
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 |
67 end |
66 prosody.opts = parsed_opts; |
68 prosody.opts = parsed_opts; |
67 end |
69 end |
68 |
70 |
69 function startup.read_config() |
71 function startup.read_config() |