From ae6dffd440109d6862bac4312e7721ed3239489f Mon Sep 17 00:00:00 2001 From: Dithesh Date: Sat, 30 May 2026 11:38:27 +0530 Subject: [PATCH] Handle ParseError in CLI commands --- sigflow/cli/commands.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/sigflow/cli/commands.py b/sigflow/cli/commands.py index 55d76df..ef1f286 100644 --- a/sigflow/cli/commands.py +++ b/sigflow/cli/commands.py @@ -1,26 +1,42 @@ from pathlib import Path from sigflow.core.engine import Engine +from sigflow.core.exceptions import ParseError from sigflow.serializers.wire import dumps from sigflow.utils.formatting import table def parse_command(args) -> int: data = Path(args.path).read_bytes() - result = Engine().process(data) + + try: + result = Engine().process(data) + except ParseError as exc: + print(f"error: {exc}") + return 1 + if args.format == "json": print(dumps(result.frames)) else: rows = [("stream", "sequence", "size")] + [(f.stream_id, f.sequence, f.size) for f in result.frames] print(table(rows)) + return 0 def validate_command(args) -> int: data = Path(args.path).read_bytes() - result = Engine().process(data) + + try: + result = Engine().process(data) + except ParseError as exc: + print(f"error: {exc}") + return 1 + for diag in result.diagnostics: print(f"{diag.severity}: {diag.code} at {diag.offset}: {diag.message}") + print(f"frames={len(result.frames)} diagnostics={len(result.diagnostics)}") + return 0 if not result.diagnostics else 1