changeset 574:e6344f57886e

Try add colours to the irker messages.
author Simon Cross <hodgestar@gmail.com>
date Thu, 22 Nov 2012 00:57:15 +0200
parents c01e1e329b47
children b94f3db7bc90
files mamba/forest.py
diffstat 1 files changed, 47 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/forest.py	Wed Nov 21 13:38:01 2012 +0200
+++ b/mamba/forest.py	Thu Nov 22 00:57:15 2012 +0200
@@ -68,7 +68,6 @@
 
 MAMBA_VERSION = "0.1"
 MAMBA_URL = "https://ctpug.org.za/hg/mamba"
-IRKER_PORT = 6659
 CIA_URL = "http://cia.navi.cx"
 CIA_MSG_TEMPLATE = """
 <message
@@ -123,20 +122,53 @@
     srv.hub.deliver(msg)
 
 
-def format_irker_message(project, filename, log, branch='uncurated'):
-    return "%(project)s: %(branch)s * %(filename)s: %(log)s" % {
+def format_irker_message(msg_template, project, filename, log,
+                         branch='uncurated', colours=None):
+    msg_params = {
         "project": project,
         "filename": filename,
         "log": log,
         "branch": branch,
     }
+    if colours:
+        msg_params.update(colours)
+    return msg_template % msg_params
+
+
+def irker_colours(colour_style):
+    if colour_style == "mIRC":
+        return {
+            'bold': '\x02',
+            'green': '\x0303',
+            'blue': '\x0302',
+            'red': '\x0305',
+            'yellow': '\x0307',
+            'brown': '\x0305',
+            'magenta': '\x0306',
+            'cyan': '\x0310',
+            'reset': '\x0F',
+        }
+    else:
+        return {
+            'bold': '',
+            'green': '',
+            'blue': '',
+            'red': '',
+            'yellow': '',
+            'brown': '',
+            'magenta': '',
+            'cyan': '',
+            'reset': '',
+        }
 
 
 def inform_irker(filename, log, branch='uncurated'):
     if app.config.forest.irker is None:
         return
     irker = app.config.forest.irker
-    privmsg = format_irker_message(irker.project, filename, log, branch)
+    colours = irker_colours(irker.colour_style)
+    privmsg = format_irker_message(irker.msg_template, irker.project,
+                                   filename, log, branch, colours=colours)
     message = json.dumps({"to": irker.channels, "privmsg": privmsg})
     try:
         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@@ -148,6 +180,14 @@
 
 class ForestConfig(object):
 
+    IRKER_PORT = 6659
+    IRKER_MSG_TEMPLATE = (
+        "%(bold)s%(project)s:%(reset)s "
+        "%(magenta)s%(branch)s%(reset)s * "
+        "%(bold)s%(filename)s%(reset)s: "
+        "%(log)s"
+    )
+
     class SubConfig(object):
         """Holder for sub-config."""
 
@@ -178,8 +218,10 @@
         irker = self.SubConfig()
         irker.project = conf['project']
         irker.host = conf.get('host', 'localhost')
-        irker.port = int(conf.get('port', IRKER_PORT))
+        irker.port = int(conf.get('port', self.IRKER_PORT))
         irker.channels = conf['channels']
+        irker.msg_template = conf.get('msg_template', self.IRKER_MSG_TEMPLATE)
+        irker.colour_style = conf.get('colour_style', 'mIRC')
         return irker
 
     def _parse_cia(self, conf):