play.wenpai.net/scripts/vm-say.sh
elementary-qa bddd9840cb
All checks were successful
Deploy play.wenpai.net / deploy (push) Successful in 5s
feat: add missing plugin sha256 checksums and operational tooling
- add sha256 for wpavatar, wp-china-yes, wpdate, wpfonts, wpmind
- restore accidentally deleted wpfonts-1.2.0.zip from git HEAD
- add NATS messaging wrappers (vm-dm.sh, vm-say.sh, lib/nats-msg.sh)
- add inbox automation hooks (inbox-reactor.sh, daemon, codex hook)
- symlink generate-html-report.js from qa/scripts/
2026-04-11 04:22:53 +08:00

75 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
source /etc/os-release
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck disable=SC1091
source "$SCRIPT_DIR/lib/nats-msg.sh"
RED='\033[0;31m'; GREEN='\033[0;32m'; NC='\033[0m'
usage() {
cat <<'USAGE'
用法: vm-say.sh [--subject <主题>] [--urgent|--info] [--extra <json>] <content>
USAGE
exit 1
}
current_vm_name() {
if [[ -f "$HOME/.vm-name" ]]; then
tr -d '[:space:]' < "$HOME/.vm-name"
elif [[ -f /etc/shared-context-vmname ]]; then
tr -d '[:space:]' < /etc/shared-context-vmname
else
hostname -s 2>/dev/null || echo unknown
fi
}
subject=""
priority="normal"
extra='{}'
content=""
while [[ $# -gt 0 ]]; do
case "$1" in
--subject)
subject="${2:-}"
shift 2
;;
--urgent)
priority="urgent"
shift
;;
--info)
priority="info"
shift
;;
--extra)
extra="${2:-{}}"
shift 2
;;
-h|--help)
usage
;;
*)
if [[ -z "$content" ]]; then
content="$1"
else
content+=" $1"
fi
shift
;;
esac
done
[[ -n "$content" ]] || usage
nats_msg_available || { echo -e "${RED}缺少 nats 或 jq${NC}"; exit 1; }
from="$(current_vm_name)"
if nats_msg_publish "$from" "all" "message" "$subject" "$content" "$priority" "$extra"; then
echo -e "${GREEN}已发送到 vm.group${NC}"
else
echo -e "${RED}发送失败${NC}"
exit 1
fi