cli: output JSON error object in MI mode
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 7 Apr 2016 23:25:40 +0000 (19:25 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 8 Apr 2016 00:22:02 +0000 (20:22 -0400)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
lttnganalyses/cli/command.py
lttnganalyses/cli/mi.py

index bdf371eea6f0c0f838954d0a79883c9bde3a4ff4..89a9333cde017eb5643abd7e4fe27470071f121a 100644 (file)
@@ -72,7 +72,10 @@ class Command:
         except KeyboardInterrupt:
             sys.exit(0)
 
-    def _error(self, msg, exit_code=1):
+    def _mi_error(self, msg, code=None):
+        print(json.dumps(mi.get_error(msg, code)))
+
+    def _non_mi_error(self, msg):
         try:
             import termcolor
 
@@ -81,6 +84,13 @@ class Command:
             pass
 
         print(msg, file=sys.stderr)
+
+    def _error(self, msg, code, exit_code=1):
+        if self._mi_mode:
+            self._mi_error(msg)
+        else:
+            self._non_mi_error(msg)
+
         sys.exit(exit_code)
 
     def _gen_error(self, msg, exit_code=1):
index ae6c58911e11f8042bfe713635ff7982077830bf..5c96984df422c15e45a19a69f52f25c28e0ab72e 100644 (file)
@@ -527,3 +527,14 @@ def get_metadata(version, title, description, authors, url, tags,
         'tags': tags,
         'table-classes': t_classes,
     }
+
+
+def get_error(message, code=None):
+    error = {
+        'error-message': message,
+    }
+
+    if code is not None:
+        error['error-code'] = code
+
+    return error
This page took 0.038859 seconds and 5 git commands to generate.