clix.lua

changeset 33
f1901c9de891
parent 32
cda6a004ff79
child 34
d4f8fc71d936
equal deleted inserted replaced
32:cda6a004ff79 33:f1901c9de891
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

mercurial