#!/bin/bash
# 9Router - Setup Auto-Scan on macOS (launchd)
# Usage: ./setup-scheduler-macos.sh

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

echo "============================================"
echo " 9Router - Auto-Scan Setup (macOS/launchd)"
echo "============================================"
echo ""

# Check if running on macOS
if [[ "$(uname)" != "Darwin" ]]; then
    echo "WARNING: This script is designed for macOS."
    echo "For Linux, use setup-scheduler.sh instead."
    echo ""
fi

# Load .env
ENV_FILE="$SCRIPT_DIR/.env"
if [[ -f "$ENV_FILE" ]]; then
    echo "Loading config from .env..."
    set -a
    source "$ENV_FILE"
    set +a
fi

# Check password
if [[ -z "$NINEROUTER_PASSWORD" ]]; then
    echo "ERROR: NINEROUTER_PASSWORD is not set!"
    echo "Please edit .env and set NINEROUTER_PASSWORD"
    exit 1
fi

# Detect Python
PYTHON_CMD=""
if command -v python3 &> /dev/null; then
    PYTHON_CMD="python3"
elif command -v python &> /dev/null; then
    PYTHON_CMD="python"
else
    echo "ERROR: Python not found!"
    exit 1
fi

PYTHON_PATH=$(which "$PYTHON_CMD")
echo "Python: $PYTHON_PATH"

SCRIPT_ABS=$(realpath "$SCRIPT_DIR/scan.py")
PLIST_LABEL="com.9router.daily-scan"
LAUNCHD_DIR="$HOME/Library/LaunchAgents"
PLIST_FILE="$LAUNCHD_DIR/$PLIST_LABEL.plist"

echo ""
echo "=== launchd Setup ==="
echo "This will create a launchd agent to run scan at login."
echo ""

# Create LaunchAgents directory
mkdir -p "$LAUNCHD_DIR"

# Create the launchd plist
cat > "$PLIST_FILE" << PLISTEOF
<?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>$PLIST_LABEL</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>$SCRIPT_DIR/run-scan.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>86400</integer>
    <key>StandardOutPath</key>
    <string>$HOME/Library/Logs/9router-scan.log</string>
    <key>StandardErrorPath</key>
    <string>$HOME/Library/Logs/9router-scan.error.log</string>
</dict>
</plist>
PLISTEOF

echo "Created: $PLIST_FILE"
echo ""

# Load the service
echo "Loading launchd service..."
launchctl load "$PLIST_FILE" 2>/dev/null || echo "Note: launchctl may require elevated permissions"

echo "SUCCESS - launchd agent created!"
echo ""
echo "To check status:"
echo "  launchctl list | grep 9router"
echo ""
echo "To view logs:"
echo "  tail -f ~/Library/Logs/9router-scan.log"
echo ""
echo "To unload (stop):"
echo "  launchctl unload $PLIST_FILE"
echo ""
echo "To remove completely:"
echo "  launchctl unload $PLIST_FILE && rm $PLIST_FILE"