summaryrefslogtreecommitdiff
path: root/dotbot/messenger
diff options
context:
space:
mode:
authorAnish Athalye <aathalye@me.com>2014-03-19 23:07:30 -0400
committerAnish Athalye <aathalye@me.com>2014-03-20 18:57:56 -0400
commit60a560e97699a1d9a4320b8e787a50b1a9a7734d (patch)
tree573ce63c2a49a278af49c0cc6542bfe3b89cf572 /dotbot/messenger
Initial commit
Diffstat (limited to 'dotbot/messenger')
-rw-r--r--dotbot/messenger/__init__.py2
-rw-r--r--dotbot/messenger/color.py8
-rw-r--r--dotbot/messenger/level.py7
-rw-r--r--dotbot/messenger/messenger.py60
4 files changed, 77 insertions, 0 deletions
diff --git a/dotbot/messenger/__init__.py b/dotbot/messenger/__init__.py
new file mode 100644
index 0000000..38fc6bc
--- /dev/null
+++ b/dotbot/messenger/__init__.py
@@ -0,0 +1,2 @@
+from .messenger import Messenger
+from .level import Level
diff --git a/dotbot/messenger/color.py b/dotbot/messenger/color.py
new file mode 100644
index 0000000..193afb7
--- /dev/null
+++ b/dotbot/messenger/color.py
@@ -0,0 +1,8 @@
+class Color(object):
+ NONE = ''
+ RESET = '\033[0m'
+ RED = '\033[91m'
+ GREEN = '\033[92m'
+ YELLOW = '\033[93m'
+ BLUE = '\033[94m'
+ MAGENTA = '\033[95m'
diff --git a/dotbot/messenger/level.py b/dotbot/messenger/level.py
new file mode 100644
index 0000000..2c361f6
--- /dev/null
+++ b/dotbot/messenger/level.py
@@ -0,0 +1,7 @@
+class Level(object):
+ NOTSET = 0
+ DEBUG = 10
+ LOWINFO = 15
+ INFO = 20
+ WARNING = 30
+ ERROR = 40
diff --git a/dotbot/messenger/messenger.py b/dotbot/messenger/messenger.py
new file mode 100644
index 0000000..04081e7
--- /dev/null
+++ b/dotbot/messenger/messenger.py
@@ -0,0 +1,60 @@
+import sys
+from ..util.singleton import Singleton
+from .color import Color
+from .level import Level
+
+class Messenger(object):
+ __metaclass__ = Singleton
+
+ def __init__(self, level = Level.LOWINFO):
+ self.set_level(level)
+
+ def set_level(self, level):
+ self._level = level
+
+ def log(self, level, message):
+ if (level >= self._level):
+ print '%s%s%s' % (self._color(level), message, self._reset())
+
+ def debug(self, message):
+ self.log(Level.DEBUG, message)
+
+ def lowinfo(self, message):
+ self.log(Level.LOWINFO, message)
+
+ def info(self, message):
+ self.log(Level.INFO, message)
+
+ def warning(self, message):
+ self.log(Level.WARNING, message)
+
+ def error(self, message):
+ self.log(Level.ERROR, message)
+
+ def _color(self, level):
+ '''
+ Get a color (terminal escape sequence) according to a level.
+ '''
+ if not sys.stdout.isatty():
+ return ''
+ elif level < Level.DEBUG:
+ return ''
+ elif Level.DEBUG <= level < Level.LOWINFO:
+ return Color.YELLOW
+ elif Level.LOWINFO <= level < Level.INFO:
+ return Color.BLUE
+ elif Level.INFO <= level < Level.WARNING:
+ return Color.GREEN
+ elif Level.WARNING <= level < Level.ERROR:
+ return Color.MAGENTA
+ elif Level.ERROR <= level:
+ return Color.RED
+
+ def _reset(self):
+ '''
+ Get a reset color (terminal escape sequence).
+ '''
+ if not sys.stdout.isatty():
+ return ''
+ else:
+ return Color.RESET