diff options
author | Anish Athalye <aathalye@me.com> | 2014-03-19 23:07:30 -0400 |
---|---|---|
committer | Anish Athalye <aathalye@me.com> | 2014-03-20 18:57:56 -0400 |
commit | 60a560e97699a1d9a4320b8e787a50b1a9a7734d (patch) | |
tree | 573ce63c2a49a278af49c0cc6542bfe3b89cf572 /dotbot/messenger |
Initial commit
Diffstat (limited to 'dotbot/messenger')
-rw-r--r-- | dotbot/messenger/__init__.py | 2 | ||||
-rw-r--r-- | dotbot/messenger/color.py | 8 | ||||
-rw-r--r-- | dotbot/messenger/level.py | 7 | ||||
-rw-r--r-- | dotbot/messenger/messenger.py | 60 |
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 |