30 lines
1.4 KiB
Bash
Executable File
30 lines
1.4 KiB
Bash
Executable File
#!/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/."
|