#!/bin/bash # Автогенерация release/manifest-VERSION.json при bump версии (version.txt / SSH_MONITOR_VERSION). set -euo pipefail ROOT="$(git rev-parse --show-toplevel)" cd "$ROOT" _staged() { git diff --cached --name-only -- "$@" } _version_bump_staged() { if _staged version.txt | grep -q .; then return 0 fi if _staged ssh-monitor | grep -q .; then if git diff --cached -- ssh-monitor | grep -qE '^[+-].*SSH_MONITOR_VERSION='; then return 0 fi fi return 1 } _agent_files_staged() { local f for f in ssh-monitor sac-client.sh update_ssh_monitor.sh ssh-monitor-watchdog ssh-monitor-perms.sh; do if _staged "$f" | grep -q .; then return 0 fi done return 1 } _version_bump_staged || _agent_files_staged || exit 0 _find_python() { local c for c in python3 python; do if command -v "$c" >/dev/null 2>&1 && "$c" -c 'import sys' >/dev/null 2>&1; then echo "$c" return 0 fi done return 1 } PY="$(_find_python)" || { echo "pre-commit: python нужен для manifest (рабочий python/python3 не найден)" >&2 exit 1 } "$PY" "$ROOT/contrib/manifest/generate.py" VER="$(tr -d '\r\n' <"$ROOT/version.txt")" [ -n "$VER" ] || { echo "pre-commit: version.txt пуст — не могу добавить manifest" >&2 exit 1 } MANIFEST="release/manifest-${VER}.json" if [ ! -f "$MANIFEST" ]; then echo "pre-commit: не создан $MANIFEST" >&2 exit 1 fi git add "$MANIFEST" echo "pre-commit: обновлён $MANIFEST (версия $VER)"