#!/usr/bin/env bash
# install-launchd.sh — Asurada 데몬을 launchd LaunchAgent 로 등록.
# 첫 실행 시 brain.db 도 만들어 둠.

set -euo pipefail

LABEL="dev.webchemist.asurada"
PLIST_DIR="$HOME/Library/LaunchAgents"
PLIST="$PLIST_DIR/${LABEL}.plist"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
TEMPLATE="$SCRIPT_DIR/${LABEL}.plist"

# asurada 바이너리 위치 — Homebrew/cargo install 기준
BIN="$(command -v asurada || true)"
if [[ -z "$BIN" ]]; then
  echo "❌ asurada 바이너리를 찾을 수 없습니다. 먼저 설치하세요." >&2
  echo "   cargo install --path $(cd "$SCRIPT_DIR/.." && pwd)" >&2
  exit 1
fi

mkdir -p "$PLIST_DIR" "$HOME/.asurada"

# 1) brain.db 초기화 (없을 때만)
if [[ ! -f "$HOME/.asurada/brain.db" ]]; then
  echo "▶ brain.db 초기화..."
  "$BIN" init
fi

# 2) plist 템플릿 치환 후 설치
echo "▶ LaunchAgent 등록..."
sed -e "s|__BIN__|$BIN|g" -e "s|__HOME__|$HOME|g" "$TEMPLATE" > "$PLIST"

# 3) 기존 등록 제거 후 다시 로드 (idempotent)
launchctl bootout "gui/$(id -u)/$LABEL" 2>/dev/null || true
launchctl bootstrap "gui/$(id -u)" "$PLIST"
launchctl enable "gui/$(id -u)/$LABEL"

echo "✓ 아스라다가 깨어났습니다 🌟"
echo "  데몬: http://127.0.0.1:7878"
echo "  로그: ~/.asurada/asurada.out.log"
echo "  중지: launchctl bootout gui/$(id -u)/$LABEL"
