#!/bin/bash

# Debug script to test individual components
set -e

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

# Function to print colored output
print_status() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Test system compatibility check
test_system_check() {
    print_status "Testing system compatibility check..."
    
    # Check architecture
    ARCH=$(uname -m)
    print_status "Architecture detected: $ARCH"
    
    # Check for apt
    if command -v apt >/dev/null 2>&1; then
        print_success "apt package manager found"
    else
        print_error "apt package manager not found"
        return 1
    fi
    
    # Test apt update (this might be where it's hanging)
    print_status "Testing apt update (this might take a while)..."
    timeout 30 sudo apt update >/dev/null 2>&1 || {
        print_error "apt update failed or timed out"
        return 1
    }
    
    print_success "System check completed successfully"
}

# Test Docker check
test_docker_check() {
    print_status "Testing Docker availability..."
    
    if command -v docker >/dev/null 2>&1; then
        print_status "Docker is installed"
        
        # Test if Docker is working
        if sudo docker --version >/dev/null 2>&1; then
            print_success "Docker command works"
        else
            print_warning "Docker command failed"
        fi
    else
        print_status "Docker is not installed"
    fi
}

# Test network connectivity
test_network() {
    print_status "Testing network connectivity..."
    
    if ping -c 1 google.com >/dev/null 2>&1; then
        print_success "Internet connectivity OK"
    else
        print_error "No internet connectivity"
        return 1
    fi
    
    if curl -s --connect-timeout 10 https://github.com >/dev/null; then
        print_success "GitHub connectivity OK"
    else
        print_error "Cannot reach GitHub"
        return 1
    fi
}

# Main debug function
main() {
    print_status "Starting debug checks..."
    echo
    
    test_system_check
    echo
    
    test_docker_check
    echo
    
    test_network
    echo
    
    print_success "All debug checks completed"
}

main "$@"