diff options
author | David Robillard <d@drobilla.net> | 2018-09-11 20:54:08 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-09-11 20:54:08 +0200 |
commit | b6e9de2de9725e2f5a3170b8171ad1a1e95e8339 (patch) | |
tree | aa8d80d8ca0d943e729e9f239229c741c5228924 /extras/color_gcc.py | |
download | pugl-b6e9de2de9725e2f5a3170b8171ad1a1e95e8339.tar.gz pugl-b6e9de2de9725e2f5a3170b8171ad1a1e95e8339.tar.bz2 pugl-b6e9de2de9725e2f5a3170b8171ad1a1e95e8339.zip |
Squashed 'waflib/' content from commit 391d285
git-subtree-dir: waflib
git-subtree-split: 391d2853c6c97efc90e466f187675e8155c866d6
Diffstat (limited to 'extras/color_gcc.py')
-rw-r--r-- | extras/color_gcc.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/extras/color_gcc.py b/extras/color_gcc.py new file mode 100644 index 0000000..b68c5eb --- /dev/null +++ b/extras/color_gcc.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +# encoding: utf-8 + +# Replaces the default formatter by one which understands GCC output and colorizes it. + +__author__ = __maintainer__ = "Jérôme Carretero <cJ-waf@zougloub.eu>" +__copyright__ = "Jérôme Carretero, 2012" + +import sys +from waflib import Logs + +class ColorGCCFormatter(Logs.formatter): + def __init__(self, colors): + self.colors = colors + Logs.formatter.__init__(self) + def format(self, rec): + frame = sys._getframe() + while frame: + func = frame.f_code.co_name + if func == 'exec_command': + cmd = frame.f_locals.get('cmd') + if isinstance(cmd, list) and ('gcc' in cmd[0] or 'g++' in cmd[0]): + lines = [] + for line in rec.msg.splitlines(): + if 'warning: ' in line: + lines.append(self.colors.YELLOW + line) + elif 'error: ' in line: + lines.append(self.colors.RED + line) + elif 'note: ' in line: + lines.append(self.colors.CYAN + line) + else: + lines.append(line) + rec.msg = "\n".join(lines) + frame = frame.f_back + return Logs.formatter.format(self, rec) + +def options(opt): + Logs.log.handlers[0].setFormatter(ColorGCCFormatter(Logs.colors)) + |