aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-07-08 19:43:32 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2013-07-08 19:43:32 +0300
commitf7a28ed9c8238b7d3faed7c40117126fb9c4b51b (patch)
treeb768ee00fee6986cec03e2b5e09b849274f78fa1
parenta488302e5ae38a6100cf9717f3ff58da7e89f386 (diff)
downloadmeson-f7a28ed9c8238b7d3faed7c40117126fb9c4b51b.zip
meson-f7a28ed9c8238b7d3faed7c40117126fb9c4b51b.tar.gz
meson-f7a28ed9c8238b7d3faed7c40117126fb9c4b51b.tar.bz2
Started work on basic color logging framework.
-rwxr-xr-xmeson.py7
-rw-r--r--mlog.py55
2 files changed, 59 insertions, 3 deletions
diff --git a/meson.py b/meson.py
index d85d5b6..379972a 100755
--- a/meson.py
+++ b/meson.py
@@ -19,6 +19,7 @@ import sys, stat, traceback
import os.path
import environment, interpreter
import backends, build
+import mlog
from coredata import version, MesonException
@@ -130,10 +131,10 @@ if __name__ == '__main__':
except Exception as e:
if isinstance(e, MesonException):
if hasattr(e, 'file') and hasattr(e, 'lineno'):
- print('\nMeson encountered an error in %s:%d:' % (e.file, e.lineno))
+ mlog.log(mlog.red('\nMeson encountered an error in %s:%d:' % (e.file, e.lineno)))
else:
- print('\nMeson encountered an error:')
- print(e)
+ mlog.log(mlog.red('\nMeson encountered an error:'))
+ mlog.log(e)
sys.exit(1)
else:
traceback.print_exc()
diff --git a/mlog.py b/mlog.py
new file mode 100644
index 0000000..7800959
--- /dev/null
+++ b/mlog.py
@@ -0,0 +1,55 @@
+# Copyright 2012 Jussi Pakkanen
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import sys, os, platform
+
+"""This is (mostly) a standalone module used to write logging
+information about Meson runs. Some output goes to screen,
+some to logging dir and some goes to both."""
+
+colorize_console = platform.system().lower() != 'windows' and os.isatty(sys.stdout.fileno())
+
+class AnsiDecorator():
+ plain_code = "\033[0m"
+
+ def __init__(self, text, code):
+ self.text = text
+ self.code = code
+
+ def get_text(self, with_codes):
+ if with_codes:
+ return self.code + self.text + AnsiDecorator.plain_code
+
+def bold(text):
+ return AnsiDecorator(text, "\033[1m")
+
+def red(text):
+ return AnsiDecorator(text, "\033[1;31m")
+
+def green(text):
+ return AnsiDecorator(text, "\033[1;32m")
+
+def cyan(text):
+ return AnsiDecorator(text, "\033[1;36m")
+
+def log(*args):
+ arr = []
+ for arg in args:
+ if isinstance(arg, str):
+ arr.append(arg)
+ elif isinstance(arg, AnsiDecorator):
+ arr.append(arg.get_text(colorize_console))
+ else:
+ arr.append(str(arg))
+ print(*arr)