65 lines
1.7 KiB
Bash
Executable File
65 lines
1.7 KiB
Bash
Executable File
#!/bin/zsh
|
|
set -euo pipefail
|
|
|
|
LABEL="com.local.ksay-kokoro"
|
|
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
PYTHON_BIN="$PROJECT_DIR/.venv/bin/python"
|
|
AGENT_DIR="$HOME/Library/LaunchAgents"
|
|
PLIST="$AGENT_DIR/$LABEL.plist"
|
|
LOG_DIR="$PROJECT_DIR/.logs"
|
|
DOMAIN="gui/$(id -u)"
|
|
CLI_LINK="/opt/homebrew/bin/ksay"
|
|
|
|
if [[ ! -x "$PYTHON_BIN" ]]; then
|
|
echo "Missing $PYTHON_BIN. Run npm run python:install first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
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>$PYTHON_BIN</string>
|
|
<string>$PROJECT_DIR/scripts/ksay_server.py</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/ksay.out.log</string>
|
|
<key>StandardErrorPath</key>
|
|
<string>$LOG_DIR/ksay.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"
|
|
|
|
if [[ -d "$(dirname "$CLI_LINK")" && -w "$(dirname "$CLI_LINK")" ]]; then
|
|
ln -sf "$PROJECT_DIR/bin/ksay" "$CLI_LINK"
|
|
echo "Linked CLI: $CLI_LINK"
|
|
else
|
|
echo "Could not link $CLI_LINK. Add $PROJECT_DIR/bin to PATH or link bin/ksay manually." >&2
|
|
fi
|
|
|
|
echo "Installed $LABEL"
|
|
echo "Endpoint: http://127.0.0.1:7332"
|
|
echo "Try: ksay --start"
|
|
echo "Logs: $LOG_DIR/ksay.*.log"
|