From 07a0b4fe2d7ef974a08f69cd4575ef77f555d4d9 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 27 Jun 2024 14:43:15 +0500 Subject: [PATCH] -m ifcopenshell.validate to print a message if file is valid --- .../ifcopenshell/validate.py | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/ifcopenshell-python/ifcopenshell/validate.py b/src/ifcopenshell-python/ifcopenshell/validate.py index fa51bbde15..4deec6fc99 100644 --- a/src/ifcopenshell-python/ifcopenshell/validate.py +++ b/src/ifcopenshell-python/ifcopenshell/validate.py @@ -39,7 +39,7 @@ import functools from collections import namedtuple from typing import Union, Iterator, Any, Optional -from logging import Logger +from logging import Logger, Handler import ifcopenshell import ifcopenshell.ifcopenshell_wrapper @@ -502,6 +502,14 @@ def validate(f: Union[ifcopenshell.file, str], logger: Logger, express_rules=Fal ifcopenshell.express.rule_executor.run(f, logger) +class LogDetectionHandler(Handler): + message_logged = False + + def emit(self, record): + if not self.message_logged: + self.message_logged = True + + if __name__ == "__main__": import sys import logging @@ -510,10 +518,13 @@ if __name__ == "__main__": flags = set(x for x in sys.argv[1:] if x.startswith("--")) for fn in filenames: + handler = None if "--json" in flags: logger = json_logger() else: logger = logging.getLogger("validate") + handler = LogDetectionHandler() + logger.addHandler(handler) logger.setLevel(logging.DEBUG) print("Validating", fn, file=sys.stderr) @@ -533,3 +544,12 @@ if __name__ == "__main__": return str(x) print("\n".join(json.dumps(x, default=conv) for x in logger.statements)) + + if handler: + logger.removeHandler(handler) + invalid_ifc = handler.message_logged + else: # json_logger. + invalid_ifc = bool(logger.statements) + + if not invalid_ifc: + print("No validation issues found.")