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.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#!/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)"
|
||||
Reference in New Issue
Block a user