Files
juc500/dist-offline/juc500-offline-update-20260720-144424/scripts/install_autolaunch_macos.sh
T
2026-07-21 21:04:25 +09:00

77 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# macOS 로그인 시 JUC500 Tauri 감시 앱 자동 실행 (케이블 연결 → GUI)
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
LABEL="com.juc500.desktop"
PLIST="$HOME/Library/LaunchAgents/${LABEL}.plist"
LAUNCHER="$ROOT/scripts/launch_tauri.sh"
BIN="$ROOT/juc500-app/src-tauri/target/release/juc500-app"
if [[ -x "$BIN" ]]; then
RUN_CMD="$BIN"
elif [[ -x "$LAUNCHER" ]]; then
RUN_CMD="/bin/bash"
RUN_ARGS=("$LAUNCHER")
else
echo "Tauri 앱 없음. 먼저: cd juc500-app && npm install && npm run tauri build" >&2
exit 1
fi
mkdir -p "$HOME/Library/LaunchAgents"
chmod +x "$ROOT/scripts/launch_tauri.sh"
if [[ "$RUN_CMD" == "/bin/bash" ]]; then
cat >"$PLIST" <<EOF
<?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>/bin/bash</string>
<string>${LAUNCHER}</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>JUC500_ROOT</key><string>${ROOT}</string>
<key>JUC500_CABLE_AUTOLAUNCH</key><string>1</string>
</dict>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key><string>${ROOT}/.juc500/tauri-launch.log</string>
<key>StandardErrorPath</key><string>${ROOT}/.juc500/tauri-launch.log</string>
</dict>
</plist>
EOF
else
cat >"$PLIST" <<EOF
<?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>${BIN}</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>JUC500_ROOT</key><string>${ROOT}</string>
<key>JUC500_CABLE_AUTOLAUNCH</key><string>1</string>
</dict>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key><string>${ROOT}/.juc500/tauri-launch.log</string>
<key>StandardErrorPath</key><string>${ROOT}/.juc500/tauri-launch.log</string>
</dict>
</plist>
EOF
fi
launchctl bootout "gui/$(id -u)/${LABEL}" 2>/dev/null || true
launchctl bootstrap "gui/$(id -u)" "$PLIST"
launchctl enable "gui/$(id -u)/${LABEL}"
echo "설치 완료: ${PLIST}"
echo "로그인 시 트레이 감시 앱이 실행되고, 케이블 연결 시 GUI가 열립니다."