#!/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)"
