Files
evermind-ai--everos/scripts/check_deprecated_names.py
wehub-resource-sync 6c9c7fe7f3
CI / integration tests (3.13) (push) Failing after 1s
Commit lint / pull request title (push) Has been skipped
Docs / links (push) Failing after 1s
CI / unit tests (3.13) (push) Failing after 1s
CI / lint (push) Failing after 1s
CI / integration tests (push) Failing after 1s
CI / package build (push) Failing after 1s
Commit lint / commit messages (push) Failing after 1s
CI / unit tests (push) Failing after 1s
chore: import upstream snapshot with attribution
2026-07-13 12:24:24 +08:00

89 lines
2.1 KiB
Python

"""Block deprecated product names in tracked repository text."""
from __future__ import annotations
import re
import subprocess
from collections.abc import Iterable
from dataclasses import dataclass
from pathlib import Path
DEPRECATED_NAME_RE = re.compile(r"\bever[\s_-]*core\b", flags=re.IGNORECASE)
SKIP_SUFFIXES = frozenset(
{
".avif",
".bmp",
".gif",
".heic",
".heif",
".icns",
".ico",
".jpeg",
".jpg",
".mov",
".mp4",
".png",
".webp",
}
)
@dataclass(frozen=True)
class Violation:
path: str
line_number: int
line: str
def find_violations(files: Iterable[tuple[str, str]]) -> list[Violation]:
violations: list[Violation] = []
for path, text in files:
for line_number, line in enumerate(text.splitlines(), start=1):
if DEPRECATED_NAME_RE.search(line):
violations.append(
Violation(path=path, line_number=line_number, line=line.strip())
)
return violations
def _tracked_paths() -> list[Path]:
result = subprocess.run(
["git", "ls-files", "-z"],
check=True,
stdout=subprocess.PIPE,
text=False,
)
return [Path(raw.decode("utf-8")) for raw in result.stdout.split(b"\0") if raw]
def _tracked_text_files() -> Iterable[tuple[str, str]]:
for path in _tracked_paths():
if not path.exists():
continue
if path.suffix.lower() in SKIP_SUFFIXES:
continue
try:
text = path.read_text(encoding="utf-8")
except UnicodeDecodeError:
continue
yield path.as_posix(), text
def main() -> int:
violations = find_violations(_tracked_text_files())
if not violations:
print("Deprecated-name check passed.")
return 0
print(
"Deprecated-name check failed.\n"
"Use EverOS or EverMind Cloud. Do not use deprecated product naming.\n"
)
for violation in violations:
print(f"- {violation.path}:{violation.line_number}: {violation.line}")
return 1
if __name__ == "__main__":
raise SystemExit(main())