"""Adapter: luac -p stderr normalized to Finding[].""" from __future__ import annotations import re from scripts.manifest import Finding _PATTERN = re.compile(r"^luac:\s+(.+?):(\d+):\s+(.+)$") def parse_luac_output(stderr: str, repo_root: str = "") -> list[Finding]: out: list[Finding] = [] prefix = repo_root.rstrip("/") + "/" if repo_root else "" for line in stderr.splitlines(): m = _PATTERN.match(line.strip()) if not m: continue filepath, lineno_str, message = m.group(1), m.group(2), m.group(3) if prefix and filepath.startswith(prefix): filepath = filepath[len(prefix):] lineno = int(lineno_str) out.append(Finding( tool="luac", rule_id="syntax-error", severity="critical", file=filepath, line=lineno, end_line=lineno, message=message, )) return out