# HG changeset patch # User Matthew Wild # Date 1262800878 0 # Node ID 614b5994a1ed7bd49cdcb80aaa986fd6e6295a1a # Parent fd77e75c489187c332da6149d13f0ecb7dd2d88f Remove clix.coro.lua now it is safely in revision control history for when I need to revive it diff -r fd77e75c4891 -r 614b5994a1ed clix.coro.lua --- a/clix.coro.lua Wed Jan 06 17:52:01 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -require "verse" -require "verse.client" - -local command = arg[1]; - -if not command then - print("Command Line XMPP, available commands:"); - for module in pairs(package.preload) do - if module:match("^clix%.") then - local m = require(module); - m{ "--short-help" }; - end - end - return 0; -end - -local ok, m = pcall(require, "clix."..command); -if not ok then - print("Error running command '"..command.."' (run with --debug to see full error)"); - if arg[2] == "--debug" then - print(m); - end - return 1; -end - -if type(m) ~= "function" then - print(command.." is not a valid command"); - return 1; -end - -local accounts = { default = {} }; -local current_account; -for line in io.lines(os.getenv("HOME").."/.clix") do - line = line:match("^%s*(.-)%s*$"); - if line:match("^%[") then - current_account = line:match("^%[(.-)%]"); - accounts[current_account] = {}; - if not current_account then -- This is the first defined account - accounts.default = accounts[current_account]; - end - elseif current_account then - local k,v = line:match("^(%w+)%s*[:=]%s*(.+)$"); - accounts[current_account or "default"][k] = v; - end -end - -function clix_connect(opts) - local account = accounts[opts.account or "default"]; - if not (account and account.jid) then - io.stderr:write("The specified account (", opts.account or "default", ") wasn't found in the config file\n"); - return nil; - end - - local conn = verse.new(); - local co_verse = coroutine.create(verse.loop); - function conn:go(...) return coroutine.resume(co_verse, ...); end - conn:hook("authentication-failure", function (err) - io.stderr:write("Authentication failure (",err.condition or "unknown error", ")", err.text and (": "..err.text) or "", "\n"); - coroutine.yield(nil, "authentication-failure"); - end); - conn:hook("binding-success", function () io.stderr:write("Connected: ", tostring(conn), "\n"); coroutine.yield(conn); end); - conn:hook("binding-failure", function (err) - io.stderr:write("Authentication failure (",err.condition or "unknown error", ")", err.text and (": "..err.text) or "", "\n"); - coroutine.yield(nil, "authentication-failure"); - end); - -- Optional config parameters - conn.connect_host = account.address; - conn.connect_port = account.port; - -- Connect! - conn:connect_client(account.jid, account.password); - return coroutine.resume(co_verse); -end - -table.remove(arg,1); - -local short_opts = { v = "verbose", t = "to", f = "from", e = "type", a = "account", p = "password" } -local opts = {}; - -for i, opt in ipairs(arg) do - if opt:match("^%-") and opt ~= "--" then - local name = opt:match("^%-%-?([^%s=]+)()") - name = (short_opts[name] or name):gsub("%-+", "_"); - if name:match("^no_") then - name = name:sub(4, -1); - opts[name] = false; - else - opts[name] = opt:match("=(.*)$") or true; - end - else - -- Remove all the handled args from the arg array - for n=1,(i-1) do - table.remove(arg, n); - end - break; - end -end - -return m(opts, arg) or 0; -