This commit is contained in:
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Inventory temporary names and reject them from public/installable surfaces."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
TOKENS = ("Project Kiln", "kiln", "KILN_")
|
||||
IGNORED_PARTS = {".git", "target", "__pycache__"}
|
||||
PUBLIC_SURFACES = {"dist", "packaging", "public", "release"}
|
||||
TEXT_SUFFIXES = {"", ".csv", ".md", ".py", ".rs", ".toml", ".yml", ".yaml"}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
matches: list[tuple[Path, str]] = []
|
||||
violations: list[tuple[Path, str]] = []
|
||||
for path in ROOT.rglob("*"):
|
||||
relative = path.relative_to(ROOT)
|
||||
if not path.is_file() or any(part in IGNORED_PARTS for part in relative.parts):
|
||||
continue
|
||||
if path.suffix.lower() not in TEXT_SUFFIXES:
|
||||
continue
|
||||
try:
|
||||
content = path.read_text()
|
||||
except UnicodeDecodeError:
|
||||
continue
|
||||
for token in TOKENS:
|
||||
if token not in content:
|
||||
continue
|
||||
matches.append((relative, token))
|
||||
if any(part in PUBLIC_SURFACES for part in relative.parts):
|
||||
violations.append((relative, token))
|
||||
if violations:
|
||||
for path, token in violations:
|
||||
print(f"FAIL: temporary token {token!r} in public surface {path}", file=sys.stderr)
|
||||
raise SystemExit(1)
|
||||
if not matches:
|
||||
print("FAIL: expected private placeholders were not found", file=sys.stderr)
|
||||
raise SystemExit(1)
|
||||
print(f"PASS: {len(matches)} temporary-name occurrences remain private and inventoried")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user