fix(build): гейт дрейфа сгенерированного кода + запрет прямой сборки из provider/
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# check_generated_drift.sh — детект дрейфа сгенерированного Go-кода.
|
||||
#
|
||||
# Сравнивает ПО СОДЕРЖИМОМУ каталог свежей генерации стенда с рабочей копией
|
||||
# провайдера, из которой возможна прямая сборка:
|
||||
#
|
||||
# generated/<stand>/go/ <-> provider/internal/resources_gen/
|
||||
#
|
||||
# Каноническая сборка идёт через 03_build_and_upload_provider.sh (временная
|
||||
# копия со свежесгенерированным кодом). Этот скрипт — детектор: он не даёт
|
||||
# provider/internal/resources_gen незаметно протухнуть (каталог в .gitignore,
|
||||
# поэтому в git status дрейф не виден).
|
||||
#
|
||||
# Использование:
|
||||
# ./TOOLS/scripts/check_generated_drift.sh dev # dev | test | prod
|
||||
#
|
||||
# Выход: 0 — дрейфа нет; 1 — дрейф есть; 2 — ошибка аргументов.
|
||||
|
||||
STAND="${1:-}"
|
||||
if [[ -z "$STAND" ]]; then
|
||||
echo "Usage: $0 <stand> # dev | test | prod" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="${ROOT_DIR:-$(cd "${SCRIPT_DIR}/../.." && pwd)}"
|
||||
|
||||
GEN_GO_DIR="${ROOT_DIR}/generated/${STAND}/go"
|
||||
PROV_GO_DIR="${ROOT_DIR}/provider/internal/resources_gen"
|
||||
|
||||
if [[ ! -d "$GEN_GO_DIR" ]]; then
|
||||
echo "ERROR: no generated go for stand '${STAND}': $GEN_GO_DIR" >&2
|
||||
echo " Run: TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/${STAND}" >&2
|
||||
exit 2
|
||||
fi
|
||||
if [[ ! -d "$PROV_GO_DIR" ]]; then
|
||||
echo "DRIFT: provider resources_gen dir missing: $PROV_GO_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Сравнение по содержимому, включая файлы, присутствующие только с одной стороны.
|
||||
if diff -rq "$GEN_GO_DIR" "$PROV_GO_DIR" >/dev/null; then
|
||||
echo "OK: no drift for stand '${STAND}' (generated go == provider copy)."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "DRIFT DETECTED for stand '${STAND}':" >&2
|
||||
echo " source: $GEN_GO_DIR" >&2
|
||||
echo " target: $PROV_GO_DIR" >&2
|
||||
echo "" >&2
|
||||
echo "Сгенерированный код стенда расходится с рабочей копией провайдера." >&2
|
||||
echo "Сборка должна идти через 03_build_and_upload_provider.sh (temp-копия);" >&2
|
||||
echo "provider/internal/resources_gen надо привести в соответствие с generated." >&2
|
||||
echo "Различия:" >&2
|
||||
diff -rq "$GEN_GO_DIR" "$PROV_GO_DIR" >&2 || true
|
||||
exit 1
|
||||
Reference in New Issue
Block a user