mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
validate: color output for readibility
This commit is contained in:
@@ -50,6 +50,7 @@ import functools
|
|||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import types
|
import types
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
@@ -778,15 +779,27 @@ def validate_ifc_applications(f: ifcopenshell.file, logger: Union[Logger, json_l
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
COLOR_RED = "\033[1;91m"
|
||||||
|
COLOR_CYAN = "\033[96m"
|
||||||
|
COLOR_YELLOW = "\033[93m"
|
||||||
|
COLOR_RESET = "\033[0m"
|
||||||
|
|
||||||
|
INSTANCE_LINE_RE = re.compile(r"(?m)^(\s*#\d+=.*)$")
|
||||||
|
CARET_LINE_RE = re.compile(r"(?m)^(\s*\^[\s\^]*)$")
|
||||||
|
|
||||||
|
|
||||||
class LogDetectionHandler(Handler):
|
class LogDetectionHandler(Handler):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.default_handler = logging.StreamHandler()
|
|
||||||
self.count = 0
|
self.count = 0
|
||||||
|
|
||||||
def emit(self, record):
|
def emit(self, record):
|
||||||
self.count += 1
|
self.count += 1
|
||||||
self.default_handler.emit(record)
|
print(f"{COLOR_RED}--- Error {self.count} ---{COLOR_RESET}", file=sys.stderr)
|
||||||
|
message = INSTANCE_LINE_RE.sub(rf"{COLOR_CYAN}\1{COLOR_RESET}", record.getMessage())
|
||||||
|
message = CARET_LINE_RE.sub(rf"{COLOR_YELLOW}\1{COLOR_RESET}", message)
|
||||||
|
print(message, file=sys.stderr)
|
||||||
|
print(file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
@@ -872,7 +885,7 @@ if __name__ == "__main__":
|
|||||||
print("No validation issues found.")
|
print("No validation issues found.")
|
||||||
|
|
||||||
if not args.json:
|
if not args.json:
|
||||||
print(f"{total_errors} errors found.")
|
print(f"{COLOR_RED}{total_errors} error(s) found.{COLOR_RESET}")
|
||||||
|
|
||||||
if some_file_is_invalid:
|
if some_file_is_invalid:
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user