diff --git a/tools/syntax_sanity.py b/tools/syntax_sanity.py new file mode 100644 index 0000000..cf12fc6 --- /dev/null +++ b/tools/syntax_sanity.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +"""Rough brace/paren balance sanity check for edited C++ files.""" +import os +import re +import sys + +os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), + "..", "terminal", "kiosk-shell")) + +FILES = [ + "src/main_window.cpp", + "src/main_window.h", + "src/desktop_list_page.cpp", + "src/desktop_list_page.h", + "src/desktop_service.cpp", + "src/desktop_service.h", + "src/desktop_session.h", + "src/moonlight_session.cpp", + "src/moonlight_session.h", + "src/login_page.cpp", + "src/login_page.h", + "src/state_machine.cpp", + "src/state_machine.h", +] + +fail = False +for f in FILES: + src = open(f, encoding="utf-8").read() + src2 = re.sub(r"//[^\n]*", "", src) + src2 = re.sub(r'"(?:\\.|[^"\\])*"', '""', src2) + src2 = re.sub(r"'(?:\\.|[^'\\])*'", "''", src2) + counts = {c: src2.count(c) for c in "{}()"} + ok = counts["{"] == counts["}"] and counts["("] == counts[")"] + print(f, counts, "OK" if ok else "MISMATCH") + if not ok: + fail = True + +sys.exit(1 if fail else 0)