#!/bin/bash

#
# Bootstrap Script - System Installer
# Stellt sicher, dass Node.js installiert ist und startet das System
#

set -e

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

# Farben
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BLUE}       🚀 System Installer & Script Manager          ${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""

# Prüfe ob Node.js installiert ist
check_node() {
    if command -v node &> /dev/null; then
        NODE_VERSION=$(node -v | sed 's/v//' | cut -d. -f1)
        if [ "$NODE_VERSION" -ge "$MIN_NODE_VERSION" ]; then
            echo -e "${GREEN}✓ Node.js $(node -v) gefunden${NC}"
            return 0
        else
            echo -e "${YELLOW}⚠ Node.js $(node -v) gefunden, aber v${MIN_NODE_VERSION}+ erforderlich${NC}"
            return 1
        fi
    else
        echo -e "${YELLOW}⚠ Node.js nicht gefunden${NC}"
        return 1
    fi
}

# Installiere Node.js
install_node() {
    echo -e "${BLUE}→ Installiere Node.js...${NC}"
    
    if [ -f "$SCRIPT_DIR/installers/code/NodeJS.sh" ]; then
        bash "$SCRIPT_DIR/installers/code/NodeJS.sh"
    else
        # Fallback: Lade neueste Version
        echo -e "${BLUE}→ Lade Node.js herunter...${NC}"
        VERSION=$(curl -Ls https://nodejs.org/dist | grep -ioP 'v\d+\.\d+\.\d+' | sort -rV | uniq | head -n 1)
        
        wget -q "https://nodejs.org/dist/$VERSION/node-$VERSION-linux-x64.tar.xz" -O /tmp/node.tar.xz
        
        mkdir -p /usr/local/node
        tar -xf /tmp/node.tar.xz -C /tmp
        mv /tmp/node-$VERSION-linux-x64 /usr/local/node/$VERSION
        
        ln -fs /usr/local/node/$VERSION/bin/* /usr/bin/
        rm /tmp/node.tar.xz
        
        echo -e "${GREEN}✓ Node.js $VERSION installiert${NC}"
    fi
}

# Prüfe und installiere npm Abhängigkeiten
check_dependencies() {
    echo -e "${BLUE}→ Prüfe npm Abhängigkeiten...${NC}"
    
    cd "$SCRIPT_DIR"
    
    if [ ! -d "node_modules" ]; then
        echo -e "${BLUE}→ Installiere Abhängigkeiten...${NC}"
        npm install --silent
        echo -e "${GREEN}✓ Abhängigkeiten installiert${NC}"
    else
        echo -e "${GREEN}✓ Abhängigkeiten vorhanden${NC}"
    fi
}

# Main
main() {
    # Prüfe Node.js
    if ! check_node; then
        echo ""
        read -p "Node.js installieren? [Y/n] " -n 1 -r
        echo ""
        if [[ $REPLY =~ ^[Nn]$ ]]; then
            echo -e "${RED}Abgebrochen. Node.js ${MIN_NODE_VERSION}+ ist erforderlich.${NC}"
            exit 1
        fi
        install_node
        echo ""
    fi
    
    # Prüfe Abhängigkeiten
    check_dependencies
    echo ""
    
    # Starte das System
    echo -e "${BLUE}→ Starte System Installer...${NC}"
    echo ""
    
    cd "$SCRIPT_DIR"
    node src/main.js "$@"
}

main "$@"
