Software / code / clix
Comparison
clix.lua @ 171:eb7625161d76
clix.lua: Read resouce from config file.
| author | Trần H. Trung <xmpp:trần.h.trung@trung.fun> |
|---|---|
| date | Fri, 07 Jul 2023 22:11:47 +0700 |
| parent | 169:4e67d34c1298 |
| child | 173:9b36119c9900 |
comparison
equal
deleted
inserted
replaced
| 170:0d561f921c13 | 171:eb7625161d76 |
|---|---|
| 8 local verse = require "verse".init "client" | 8 local verse = require "verse".init "client" |
| 9 | 9 |
| 10 -- Global to allow commands to add to it | 10 -- Global to allow commands to add to it |
| 11 short_opts = { v = "verbose", q = "quiet", t = "to", f = "from", e = "type", | 11 short_opts = { v = "verbose", q = "quiet", t = "to", f = "from", e = "type", |
| 12 a = "account", p = "password", r = "resource", o = "presence", c = "chatroom", i = "interactive", | 12 a = "account", p = "password", r = "resource", o = "presence", c = "chatroom", i = "interactive", |
| 13 f = "file" } | 13 f = "file" } |
| 14 | 14 |
| 15 | 15 |
| 16 local commands = "adhoc archive avatar bounce export mirror moderate ping\ | 16 local commands = "adhoc archive avatar bounce export mirror moderate ping\ |
| 17 presence publish_atom raw receive roster send sendfile sendfilecontent vcard\ | 17 presence publish_atom raw receive roster send sendfile sendfilecontent vcard\ |
| 18 version watch_pep" | 18 version watch_pep" |
| 25 end | 25 end |
| 26 return 0; | 26 return 0; |
| 27 end | 27 end |
| 28 | 28 |
| 29 local accounts = { default = {} }; | 29 local accounts = { default = {} }; |
| 30 local current_account; | 30 local current_account, config_file, err; |
| 31 | 31 |
| 32 local config_path = (os.getenv("XDG_CONFIG_HOME") or (os.getenv("HOME").."/.config")); | 32 local home_dir = (os.getenv("XDG_CONFIG_HOME") or os.getenv("HOME")); |
| 33 local config_file, err = io.open(config_path.."/.clixrc") or io.open(config_path.."/.clix"); | 33 if home_dir then |
| 34 | 34 local config_path = (home_dir.."/.config"); |
| 35 if not config_file then | 35 config_file, err = io.open(config_path.."/.clixrc") or io.open(config_path.."/.clix"); |
| 36 print("Unable to open config file... looked for "..config_path.."/.clixrc"); | 36 if not config_file then |
| 37 if err then print(err); end | 37 print("Unable to open config file... looked for "..config_path.."/.clixrc"); |
| 38 os.exit(1); | 38 if err then print(err); end |
| 39 os.exit(1); | |
| 40 end | |
| 41 else | |
| 42 config_file, err = io.open("/etc/clixrc") or io.open("/etc/clix"); | |
| 43 if not config_file then | |
| 44 print("Could not find any config file."); | |
| 45 if err then print(err); end | |
| 46 os.exit(1); | |
| 47 end | |
| 39 end | 48 end |
| 40 | 49 |
| 41 for line in config_file:lines() do | 50 for line in config_file:lines() do |
| 42 line = line:match("^%s*(.-)%s*$"); | 51 line = line:match("^%s*(.-)%s*$"); |
| 43 if line:match("^%[") then | 52 if line:match("^%[") then |
| 129 | 138 |
| 130 -- Connect! | 139 -- Connect! |
| 131 conn:connect_client(account.jid, account.password, clientkey, serverkey); | 140 conn:connect_client(account.jid, account.password, clientkey, serverkey); |
| 132 if type(opts.resource) == "string" then | 141 if type(opts.resource) == "string" then |
| 133 conn.resource = opts.resource; | 142 conn.resource = opts.resource; |
| 134 end | 143 elseif account.resource then |
| 135 | 144 conn.resource = account.resource; |
| 145 end | |
| 146 | |
| 136 local ok, ret = pcall(verse.loop); | 147 local ok, ret = pcall(verse.loop); |
| 137 if not ok and not ret:match("interrupted!$") then | 148 if not ok and not ret:match("interrupted!$") then |
| 138 io.stderr:write("Fatal error: ", ret, "\n"); | 149 io.stderr:write("Fatal error: ", ret, "\n"); |
| 139 return 1; | 150 return 1; |
| 140 end | 151 end |