52 lines
1.3 KiB
Bash
Executable File
52 lines
1.3 KiB
Bash
Executable File
#!/bin/zsh
|
|
set -euo pipefail
|
|
|
|
LABEL="com.local.macmini-mcp"
|
|
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
NODE_BIN="$(command -v node)"
|
|
AGENT_DIR="$HOME/Library/LaunchAgents"
|
|
PLIST="$AGENT_DIR/$LABEL.plist"
|
|
LOG_DIR="$PROJECT_DIR/.logs"
|
|
DOMAIN="gui/$(id -u)"
|
|
|
|
mkdir -p "$AGENT_DIR" "$LOG_DIR"
|
|
|
|
cat > "$PLIST" <<PLIST
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>Label</key>
|
|
<string>$LABEL</string>
|
|
<key>ProgramArguments</key>
|
|
<array>
|
|
<string>$NODE_BIN</string>
|
|
<string>--watch</string>
|
|
<string>src/http.js</string>
|
|
</array>
|
|
<key>WorkingDirectory</key>
|
|
<string>$PROJECT_DIR</string>
|
|
<key>RunAtLoad</key>
|
|
<true/>
|
|
<key>KeepAlive</key>
|
|
<true/>
|
|
<key>ThrottleInterval</key>
|
|
<integer>2</integer>
|
|
<key>StandardOutPath</key>
|
|
<string>$LOG_DIR/service.out.log</string>
|
|
<key>StandardErrorPath</key>
|
|
<string>$LOG_DIR/service.err.log</string>
|
|
</dict>
|
|
</plist>
|
|
PLIST
|
|
|
|
plutil -lint "$PLIST"
|
|
launchctl bootout "$DOMAIN" "$PLIST" 2>/dev/null || true
|
|
launchctl bootstrap "$DOMAIN" "$PLIST"
|
|
launchctl enable "$DOMAIN/$LABEL"
|
|
launchctl kickstart -k "$DOMAIN/$LABEL"
|
|
|
|
echo "Installed $LABEL"
|
|
echo "Endpoint: configured by .env (see the service log for the listening URL)"
|
|
echo "Logs: $LOG_DIR"
|