Clean up and document immediate mode.
authorEric S. Raymond <esr@thyrsus.com>
Sat, 30 Nov 2013 20:00:00 +0000 (15:00 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Sat, 30 Nov 2013 20:00:00 +0000 (15:00 -0500)
NEWS
irk [deleted file]
irkerd
irkerd.xml

diff --git a/NEWS b/NEWS
index 4a80c8fda8971c5b1b8643e21d10e2b036a52d6c..bcf564c44ad1013c75987afeb93367a717e89490 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
                        irker history 
 
+Repository head:
+  -i option enables immediate sending of one line in foreground.
+
 2.2 @ 2013-11-29
   Fixed Unicode processing - got busted in 2.0 when irclib was removed.
   Show Python traceback on higher debug levels.
diff --git a/irk b/irk
deleted file mode 100755 (executable)
index 6307d65..0000000
--- a/irk
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-# Illustrates how to test irkerd.
-#
-# First argument must be a channel URL. If it does not begin with "irc", 
-# the base URL for freenode is prepended.
-#
-# -k option kills irkerd if irk hard to spawn one.
-#
-# Second argument must be a payload string.  Standard C-style escapes 
-# such as \n and \t are decoded.
-#
-import json
-import socket
-import sys
-import fileinput
-import subprocess
-import time
-import os
-import signal
-import getopt
-
-def send(target, message):
-    data = {"to": target, "privmsg" : message}
-    #print(json.dumps(data))
-    try:
-        s = socket.create_connection(("localhost", 6659))
-        s.sendall(json.dumps(data))
-    except socket.error, e:
-        sys.stderr.write("irkerd: write to server failed: %r\n" % e)
-
-if __name__ == "__main__":
-    (options, arguments) = getopt.getopt(sys.argv[1:], "k", )
-    killafter = False
-    for (opt, val) in options:
-        if opt == '-k':
-            killafter = True
-
-    # Spawn an irkerd instance if none is running.
-    try:
-        # irkerd might already be running
-        s = socket.create_connection(("localhost", 6659))
-        irkerd = None
-    except:
-        # If it isn't, spawn an instance
-        print "Spawning an irker instance..."
-        irkerd = subprocess.Popen("irkerd", shell=True, preexec_fn=os.setsid)
-        time.sleep(0.5)
-
-    target = arguments[0]
-    if not "irc:" in target:
-        target = "irc://chat.freenode.net/{0}".format(target)
-    message = " ".join(arguments[1:])
-    message = message.decode('string_escape')
-    if message == '-':
-        for line in fileinput.input('-'):
-            send(target, line.rstrip('\n'))
-    else:
-        send(target, message)
-    if killafter:
-        if irkerd:
-            time.sleep(0.5)
-            # Magic required because shell=True, terminate() won't work.
-            os.killpg(irkerd.pid, signal.SIGTERM)
-            print "...terminated."
diff --git a/irkerd b/irkerd
index 1484af771592f5d67e7f1a92a24f276d25dcc619..86f10c686f848e5ec6eb35837f3a9432df46670b 100755 (executable)
--- a/irkerd
+++ b/irkerd
@@ -828,13 +828,14 @@ class IrkerUDPHandler(SocketServer.BaseRequestHandler):
 def usage():
     sys.stdout.write("""
 Usage:
-  irkerd [-d debuglevel] [-l logfile] [-n nick] [-p password] [-V] [-h]
+  irkerd [-d debuglevel] [-l logfile] [-n nick] [-p password] [-i channel message] [-V] [-h]
 
 Options
   -d    set debug level
   -l    set logfile
   -n    set nick-style
   -p    set nickserv password
+  -i    immediate mode
   -V    return irkerd version
   -h    print this help dialog
 """)
@@ -875,8 +876,7 @@ if __name__ == '__main__':
         def bailout():
             raise SystemExit, 1
         irker.irc.add_event_handler("quit", lambda _c, _e: bailout())
-        (to, privmsg) = val.split(",")
-        irker.handle('{"to":"%s","privmsg":"%s"}' % (to, privmsg), quit_after=True)
+        irker.handle('{"to":"%s","privmsg":"%s"}' % (immediate, arguments[0]), quit_after=True)
         irker.irc.spin()
     else:
         irker.thread_launch()
index 0638a6e5d62438c9893cc00eae343cd9f9902a1e..2a6c1bbfc517d9f074c08e529801f548c4c8e512 100644 (file)
      <arg>-l <replaceable>logfile</replaceable></arg>
      <arg>-n <replaceable>nick</replaceable></arg>
      <arg>-p <replaceable>password</replaceable></arg>
+     <arg>-i <replaceable>ITC-URL</replaceable></arg>
      <arg>-V</arg>
-        <arg>-h</arg>
+     <arg>-h</arg>
+     <arg choice='opt'><replaceable>message text</replaceable></arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
@@ -108,6 +110,12 @@ password to be used. If given, this password is shipped to
 authenticate the nick on receipt of a welcome message.</para></listitem>
 </varlistentry>
 <varlistentry>
+<term>-i</term>
+<listitem><para>Immediate mode, to be run in foreground. Takes two
+following values interpreted as a channel URL and a message
+string. Sends the message, then quits.</para></listitem>
+</varlistentry>
+<varlistentry>
 <term>-V</term>
 <listitem><para>Write the program version to stdout and
 terminate.</para></listitem>