refactor(generator): реестры исключений (данные) вместо хардкодов svc.ID==N / ServiceID==N

This commit is contained in:
Repinoid
2026-09-22 08:31:22 +03:00
parent 05f56c5e00
commit dc321b5e3a
3 changed files with 85 additions and 12 deletions
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
set -euo pipefail
# check_hardcoded_service_ids.sh — запрет сервис-специфичных хардкодов по числовому ID.
#
# Ищет сравнения вида svc.ID == N / ServiceID == N / spec.ServiceID == N (N > 0)
# в Go-коде TOOLS/. Исключения должны жить ТОЛЬКО в именованных реестрах (данные):
# - TOOLS/yaml-generator/main.go (serviceSpecificModifiers)
# - TOOLS/docs-generator/internal/writers/writers.go (serviceSpecificDocExamples)
#
# Выход: 0 — хардкодов нет; 1 — найдены.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="${ROOT_DIR:-$(cd "${SCRIPT_DIR}/../.." && pwd)}"
matches="$(grep -rnE '\.(ServiceID|ID)[[:space:]]*==[[:space:]]*[1-9][0-9]*' "$ROOT_DIR/TOOLS" --include='*.go' || true)"
if [[ -n "$matches" ]]; then
echo "HARDCODED SERVICE ID FOUND (service-specific logic must live in a registry):" >&2
echo "$matches" >&2
echo "" >&2
echo "Вынеси исключение в один из реестров:" >&2
echo " - TOOLS/yaml-generator/main.go (serviceSpecificModifiers)" >&2
echo " - TOOLS/docs-generator/internal/writers/writers.go (serviceSpecificDocExamples)" >&2
echo "См. TOOLS/ARCHITECTURE.md, раздел «Реестр исключений»." >&2
exit 1
fi
echo "OK: no hardcoded service IDs in TOOLS/."