Software /
code /
clix
File
clix/message.lua @ 9:c1d591488695
clix.message: Add -i/--interactive to allow piping stdin over XMPP (like sendxmpp)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 07 Jan 2010 02:08:50 +0000 |
parent | 0:ae83411a89c9 |
line wrap: on
line source
short_opts.i = "interactive"; return function (opts, arg) if (#arg == 0 or opts.help) and not opts.interactive then return 0; end local function on_connect(conn) local function send_message(_, text) conn:send(verse.message({ to = opts.to, type = opts.type or "chat" }):body(text)); end if opts.interactive then -- Fake socket object around stdin local stdin = { getfd = function () return 0; end; dirty = function (self) return false; end; settimeout = function () end; send = function (_, d) return #d, 0; end; close = function () end; receive = function (_, patt) local data = io.stdin:read(patt); io.write(data, patt == "*l" and "\n" or ""); return data; end }; stdin = require "net.server".wrapclient(stdin, "stdin", 0, { onincoming = send_message, ondisconnect = function () end }, "*l"); else send_message(nil, table.concat(arg, " ")); conn:close(); end end clix_connect(opts, on_connect); end