From 6dc332ec93525a1c40c1329c7449df659b9a6104 Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Thu, 12 Dec 2024 10:06:32 +0100 Subject: [PATCH] scripts: west_commands: install JSON hook to commands using jsonschema Commands using a jsonschema based protocol will now report errors formatted in JSON. Signed-off-by: Gerard Marull-Paretas --- .../create_board/ncs_create_board.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/west_commands/create_board/ncs_create_board.py b/scripts/west_commands/create_board/ncs_create_board.py index 9e527c1664cd..f57e9d81cfba 100644 --- a/scripts/west_commands/create_board/ncs_create_board.py +++ b/scripts/west_commands/create_board/ncs_create_board.py @@ -4,10 +4,10 @@ from pathlib import Path import json import shutil +import sys from jinja2 import Environment, FileSystemLoader, TemplateNotFound from west.commands import WestCommand -from west import log from yaml import load import jsonschema @@ -16,6 +16,12 @@ except ImportError: from yaml import Loader +sys.path.append(str(Path(__file__).parents[1])) +import utils + + +utils.install_json_excepthook() + SCRIPT_DIR = Path(__file__).absolute().parent TEMPLATE_DIR = SCRIPT_DIR / "templates" @@ -67,7 +73,7 @@ def do_run(self, args, unknown_args): try: jsonschema.validate(input, schema) except jsonschema.ValidationError as e: - raise Exception("Board configuration is not valid") from e + raise ValueError("Board configuration is not valid") from e soc_parts = input["soc"].split("-") req_soc = soc_parts[0].lower() @@ -86,8 +92,7 @@ def do_run(self, args, unknown_args): break if not series: - log.err(f"Invalid/unsupported SoC: {req_soc}") - return + raise ValueError(f"Invalid/unsupported SoC: {req_soc}") targets = [] for variant in soc["variants"]: @@ -130,8 +135,7 @@ def do_run(self, args, unknown_args): break if not targets: - log.err(f"Invalid/unsupported variant: {req_variant}") - return + raise ValueError(f"Invalid/unsupported variant: {req_variant}") # prepare Jinja environment env = Environment(