Files
ssh-monitor/contrib/hooks/pre-commit
T
PapaTramp 5ac4792c3c chore: auto manifest on version bump; local manual script only
contrib/manifest/generate.py + pre-commit hook; install-git-hooks.sh creates
.local/build-release-manifest.sh (gitignored). Remove scripts/ from remote.
2026-07-08 12:05:21 +10:00

56 lines
1.3 KiB
Bash

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