#!/usr/bin/env bash set -euo pipefail SERVICE_NAME="com.chatgpt-register.web" PLIST_PATH="${HOME}/Library/LaunchAgents/${SERVICE_NAME}.plist" GUI_DOMAIN="gui/$(id -u)" PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" LOG_DIR="${PROJECT_DIR}/logs" usage() { echo "用法: $0 {start|stop|restart|status|logs|uninstall}" } cmd="${1:-}" case "${cmd}" in start) launchctl bootstrap "${GUI_DOMAIN}" "${PLIST_PATH}" 2>/dev/null || true launchctl enable "${GUI_DOMAIN}/${SERVICE_NAME}" 2>/dev/null || true launchctl kickstart -k "${GUI_DOMAIN}/${SERVICE_NAME}" ;; stop) launchctl bootout "${GUI_DOMAIN}" "${PLIST_PATH}" ;; restart) launchctl bootout "${GUI_DOMAIN}" "${PLIST_PATH}" 2>/dev/null || true launchctl bootstrap "${GUI_DOMAIN}" "${PLIST_PATH}" launchctl enable "${GUI_DOMAIN}/${SERVICE_NAME}" launchctl kickstart -k "${GUI_DOMAIN}/${SERVICE_NAME}" ;; status) launchctl print "${GUI_DOMAIN}/${SERVICE_NAME}" ;; logs) mkdir -p "${LOG_DIR}" touch "${LOG_DIR}/web.stdout.log" "${LOG_DIR}/web.stderr.log" tail -f "${LOG_DIR}/web.stdout.log" "${LOG_DIR}/web.stderr.log" ;; uninstall) launchctl bootout "${GUI_DOMAIN}" "${PLIST_PATH}" 2>/dev/null || true rm -f "${PLIST_PATH}" echo "已卸载 ${SERVICE_NAME}" ;; *) usage exit 1 ;; esac