#!/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 if ! command -v python3 >/dev/null 2>&1; then echo "pre-commit: python3 нужен для manifest" >&2 exit 1 fi python3 "$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)"