10 |
10 |
11 -- Global to allow commands to add to it |
11 -- Global to allow commands to add to it |
12 short_opts = { v = "verbose", q = "quiet", t = "to", f = "from", e = "type", |
12 short_opts = { v = "verbose", q = "quiet", t = "to", f = "from", e = "type", |
13 a = "account", p = "password", r = "resource", o = "presence", c = "chatroom" } |
13 a = "account", p = "password", r = "resource", o = "presence", c = "chatroom" } |
14 |
14 |
15 local command = arg[1]; |
15 if #arg < 1 then |
16 |
|
17 if not command then |
|
18 print("Command Line XMPP, available commands:"); |
16 print("Command Line XMPP, available commands:"); |
19 for module in pairs(package.preload) do |
17 for module in pairs(package.preload) do |
20 if module:match("^clix%.") then |
18 if module:match("^clix%.") then |
21 local m = require(module); |
19 local m = require(module); |
22 io.write("\t", module:gsub("^clix%.", ""), ": "); |
20 io.write("\t", module:gsub("^clix%.", ""), ": "); |
24 end |
22 end |
25 end |
23 end |
26 return 0; |
24 return 0; |
27 end |
25 end |
28 |
26 |
29 local ok, m = pcall(require, "clix."..command); |
|
30 if not ok then |
|
31 local is_debug; |
|
32 for i=1,#arg do |
|
33 if arg[i] == "--debug" then |
|
34 is_debug = true; break; |
|
35 end |
|
36 end |
|
37 print("Error running command '"..command..(is_debug and "" or "' (run with --debug to see full error)")); |
|
38 if is_debug then |
|
39 print(m); |
|
40 end |
|
41 return 1; |
|
42 end |
|
43 |
|
44 if type(m) ~= "function" then |
|
45 print(command.." is not a valid command"); |
|
46 return 1; |
|
47 end |
|
48 |
|
49 local accounts = { default = {} }; |
27 local accounts = { default = {} }; |
50 local current_account; |
28 local current_account; |
51 |
29 |
52 local config_path = (os.getenv("XDG_CONFIG_HOME") or (os.getenv("HOME").."/.config"); |
30 local config_path = (os.getenv("XDG_CONFIG_HOME") or (os.getenv("HOME").."/.config")); |
53 local config_file, err = io.open(config_path.."/.clixrc") or io.open(config_path.."/.clix"); |
31 local config_file, err = io.open(config_path.."/.clixrc") or io.open(config_path.."/.clix"); |
54 |
32 |
55 if not config_file then |
33 if not config_file then |
56 print("Unable to open config file... looked for "..config_path.."/.clixrc"); |
34 print("Unable to open config file... looked for "..config_path.."/.clixrc"); |
57 if err then print(err); end |
35 if err then print(err); end |
150 -- Remove all the handled args from the arg array |
128 -- Remove all the handled args from the arg array |
151 for n=(args_handled_up_to or #arg),1,-1 do |
129 for n=(args_handled_up_to or #arg),1,-1 do |
152 table.remove(arg, n); |
130 table.remove(arg, n); |
153 end |
131 end |
154 |
132 |
|
133 local command = arg[1]; |
|
134 |
|
135 local ok, m = pcall(require, "clix."..command); |
|
136 if not ok then |
|
137 local is_debug; |
|
138 for i=1,#arg do |
|
139 if arg[i] == "--debug" then |
|
140 is_debug = true; break; |
|
141 end |
|
142 end |
|
143 print("Error running command '"..command..(is_debug and "" or "' (run with --debug to see full error)")); |
|
144 if is_debug then |
|
145 print(m); |
|
146 end |
|
147 return 1; |
|
148 end |
|
149 |
|
150 if type(m) ~= "function" then |
|
151 print(command.." is not a valid command"); |
|
152 return 1; |
|
153 end |
|
154 |
155 return m(opts, arg) or 0; |
155 return m(opts, arg) or 0; |
156 |
156 |