#!/bin/bash
"""
Setup script for SamCloud Home Lab Dashboard

This script installs dependencies and sets up the comprehensive home lab dashboard.
"""

echo "🏠 Setting up SamCloud Home Lab Dashboard..."

# Check if Python 3 is available
if ! command -v python3 &> /dev/null; then
    echo "❌ Python 3 is required but not installed"
    exit 1
fi

# Install Python dependencies
echo "📦 Installing Python dependencies..."
pip3 install -r homelab_requirements.txt

# Make the dashboard script executable
chmod +x homelab_dashboard.py

# Create a systemd service file (for Linux) or LaunchDaemon (for macOS)
if [[ "$OSTYPE" == "darwin"* ]]; then
    echo "🍎 Creating macOS LaunchDaemon for home lab dashboard..."
    
    cat > homelab_dashboard.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>ca.samcloud.homelab-dashboard</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/python3</string>
        <string>/Volumes/SamMgmt/CF DDClient/homelab_dashboard.py</string>
        <string>--host</string>
        <string>0.0.0.0</string>
        <string>--port</string>
        <string>7429</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/var/log/homelab_dashboard.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/homelab_dashboard.err</string>
    <key>WorkingDirectory</key>
    <string>/Volumes/SamMgmt/CF DDClient</string>
</dict>
</plist>
EOF

    echo "📄 LaunchDaemon created: homelab_dashboard.plist"
    echo "To install: sudo cp homelab_dashboard.plist /Library/LaunchDaemons/"
    echo "To start: sudo launchctl load /Library/LaunchDaemons/homelab_dashboard.plist"
    
else
    echo "🐧 Creating systemd service for home lab dashboard..."
    
    cat > homelab-dashboard.service << 'EOF'
[Unit]
Description=SamCloud Home Lab Dashboard
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/homelab
ExecStart=/usr/bin/python3 /home/pi/homelab/homelab_dashboard.py --host 0.0.0.0 --port 7429
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

    echo "📄 Systemd service created: homelab-dashboard.service"
    echo "To install: sudo cp homelab-dashboard.service /etc/systemd/system/"
    echo "To enable: sudo systemctl enable homelab-dashboard"
    echo "To start: sudo systemctl start homelab-dashboard"
fi

# Create a management script
cat > homelab << 'EOF'
#!/bin/bash
# SamCloud Home Lab Dashboard Management Script

DASHBOARD_PATH="/Volumes/SamMgmt/CF DDClient/homelab_dashboard.py"
PLIST_PATH="/Library/LaunchDaemons/ca.samcloud.homelab-dashboard.plist"

case "$1" in
    start)
        echo "🚀 Starting home lab dashboard..."
        python3 "$DASHBOARD_PATH" --host 0.0.0.0 --port 7429
        ;;
    status)
        echo "📊 Checking home lab dashboard status..."
        if pgrep -f "homelab_dashboard.py" > /dev/null; then
            echo "✅ Dashboard is running"
            echo "🌐 Available at: http://localhost:7429"
        else
            echo "❌ Dashboard is not running"
        fi
        ;;
    install-service)
        echo "📦 Installing dashboard service..."
        if [[ "$OSTYPE" == "darwin"* ]]; then
            sudo cp homelab_dashboard.plist "$PLIST_PATH"
            sudo launchctl load "$PLIST_PATH"
            echo "✅ macOS LaunchDaemon installed and started"
        else
            sudo cp homelab-dashboard.service /etc/systemd/system/
            sudo systemctl enable homelab-dashboard
            sudo systemctl start homelab-dashboard
            echo "✅ Systemd service installed and started"
        fi
        ;;
    stop-service)
        echo "🛑 Stopping dashboard service..."
        if [[ "$OSTYPE" == "darwin"* ]]; then
            sudo launchctl unload "$PLIST_PATH" 2>/dev/null || true
        else
            sudo systemctl stop homelab-dashboard
        fi
        echo "✅ Service stopped"
        ;;
    logs)
        echo "📋 Dashboard logs:"
        if [[ "$OSTYPE" == "darwin"* ]]; then
            tail -f /var/log/homelab_dashboard.log
        else
            sudo journalctl -u homelab-dashboard -f
        fi
        ;;
    open)
        echo "🌐 Opening dashboard in browser..."
        if command -v open &> /dev/null; then
            open http://localhost:7429
        elif command -v xdg-open &> /dev/null; then
            xdg-open http://localhost:7429
        else
            echo "Please open http://localhost:7429 in your browser"
        fi
        ;;
    *)
        echo "SamCloud Home Lab Dashboard Management"
        echo ""
        echo "Usage: $0 {start|status|install-service|stop-service|logs|open}"
        echo ""
        echo "Commands:"
        echo "  start           - Start dashboard in foreground"
        echo "  status          - Check if dashboard is running"
        echo "  install-service - Install as system service"
        echo "  stop-service    - Stop system service"
        echo "  logs            - Show dashboard logs"
        echo "  open            - Open dashboard in browser"
        ;;
esac
EOF

chmod +x homelab

echo ""
echo "✅ Setup complete!"
echo ""
echo "🚀 Quick start:"
echo "   ./homelab start                 # Start dashboard"
echo "   ./homelab open                  # Open in browser"
echo "   ./homelab install-service       # Install as system service"
echo ""
echo "🌐 Dashboard will be available at: http://localhost:7429"
echo "📊 Features:"
echo "   • DDNS status monitoring"
echo "   • System resource monitoring (CPU, memory, disk)"
echo "   • Service status monitoring"
echo "   • Docker container monitoring"
echo "   • REST API endpoints"
echo "   • Beautiful, responsive UI"
echo ""
echo "🔧 API endpoints:"
echo "   GET /                    # Dashboard UI"
echo "   GET /api/dashboard       # All dashboard data"
echo "   GET /api/ddns           # DDNS status only"
echo "   GET /api/system         # System info only"
echo "   GET /api/services       # Services status only"
echo "   GET /api/containers     # Docker containers only"
echo "   GET /health             # Health check"
