scripts/install-butler-gateway-service.sh
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env bash
# Install Butler gateway as a systemd --user service.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# shellcheck source=scripts/lib/butler-gateway-preflight.sh
source "$ROOT/scripts/lib/butler-gateway-preflight.sh"
# shellcheck source=scripts/lib/butler-systemd-install.sh
source "$ROOT/scripts/lib/butler-systemd-install.sh"
PYTHON="$(butler_resolve_python3)"
UNIT_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user"
TEMPLATE="$ROOT/scripts/systemd/butler-gateway.service"
DEST="$UNIT_DIR/butler-gateway.service"
NO_RESTART=0
CHECK_ONLY=0
while [[ $# -gt 0 ]]; do
case "$1" in
--no-restart) NO_RESTART=1 ;;
--check-only) CHECK_ONLY=1 ;;
-h|--help)
echo "Usage: $(basename "$0") [--check-only] [--no-restart]"
exit 0
;;
*)
echo "Unknown option: $1" >&2
exit 1
;;
esac
shift
done
ROOT="$ROOT" butler_gateway_preflight || {
if [[ "$CHECK_ONLY" -eq 1 ]]; then
exit 1
fi
echo "Preflight failed; fix errors above before installing." >&2
exit 1
}
if [[ "$CHECK_ONLY" -eq 1 ]]; then
exit 0
fi
# Avoid Hermes stealing the same Bot session.
if systemctl --user cat hermes-gateway.service >/dev/null 2>&1; then
systemctl --user stop hermes-gateway.service 2>/dev/null || true
systemctl --user disable hermes-gateway.service 2>/dev/null || true
echo "Disabled hermes-gateway.service (Butler-only WeChat)."
fi
mkdir -p "$UNIT_DIR" "$ROOT/logs"
butler_render_systemd_unit "$TEMPLATE" "$DEST" "$ROOT" "$PYTHON"
systemctl --user daemon-reload
systemctl --user enable butler-gateway.service
if [[ "$NO_RESTART" -eq 0 ]]; then
systemctl --user restart butler-gateway.service
else
echo "Unit installed; skipped restart (--no-restart)."
fi
systemctl --user --no-pager status butler-gateway.service | head -15
echo ""
echo "Installed: $DEST"
echo "Ops: bash scripts/butler-gateway-ops.sh status|restart|logs|preflight"
echo "Docs: docs/guides/wechat-gateway-ops.md"