fix(cli): resolve JSON spinner leakage and cleanup review findings

- Guard parse_cmd spinner with `fmt == "json"` (default format) to prevent
  Rich status output from polluting machine-readable stdout in piped usage
- Remove unused `Rule` import from cli.py
- Remove unused `_orig_print` variable in verify_rich_cli.py
- Unify semantica.cli import style in verify_rich_cli.py; use cli_mod.main
This commit is contained in:
KaifAhmad1
2026-06-04 16:57:00 +05:30
parent b821d4e7c6
commit dbf6ef7b0b
2 changed files with 2 additions and 5 deletions
+1 -2
View File
@@ -18,7 +18,6 @@ import click
from rich import box
from rich.console import Console
from rich.panel import Panel
from rich.rule import Rule
from rich.syntax import Syntax
from rich.table import Table
from rich.text import Text
@@ -828,7 +827,7 @@ def parse_cmd(cli_ctx: CLIContext, file: str, parser: Optional[str], fmt: str) -
kwargs["parser"] = parser
try:
from .parse import parse_document
if cli_ctx.quiet or cli_ctx.json_output:
if cli_ctx.quiet or cli_ctx.json_output or fmt == "json":
result = parse_document(**kwargs)
else:
with console.status(f"[{_DIM}]Parsing {Path(file).name}…[/{_DIM}]", spinner="dots"):
+1 -3
View File
@@ -14,7 +14,6 @@ def _print(s=""):
# Monkey-patch print for this module
import builtins
_orig_print = builtins.print
def _safe_print(*args, **kw):
sep = kw.get("sep", " ")
end = kw.get("end", "\n")
@@ -23,7 +22,6 @@ def _safe_print(*args, **kw):
sys.stdout.buffer.flush()
builtins.print = _safe_print
from semantica.cli import main
from click.testing import CliRunner
from rich.console import Console
import semantica.cli as cli_mod
@@ -37,7 +35,7 @@ def run(args):
buf = io.StringIO()
cli_mod.console = Console(file=buf, no_color=True, width=120)
r = CliRunner()
result = r.invoke(main, args)
result = r.invoke(cli_mod.main, args)
return result.exit_code, buf.getvalue(), result.output