#!/bin/bash
#
# Script pentru instalare dependențe lipsă pentru UnderChat IRCd
# Limba: Română
#

# Culori
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
ROSU='\033[0;31m'
NC='\033[0m'

log_info() {
    echo -e "${ALBASTRU}[INFO]${NC} $1"
}

log_success() {
    echo -e "${VERDE}[SUCCES]${NC} $1"
}

log_error() {
    echo -e "${ROSU}[EROARE]${NC} $1"
}

log_warn() {
    echo -e "${GALBEN}[AVERTIZARE]${NC} $1"
}

echo -e "${ALBASTRU}"
echo "═══════════════════════════════════════"
echo "  Instalare Dependențe UnderChat IRCd"
echo "═══════════════════════════════════════"
echo -e "${NC}"

# Detectează distribuzione Linux
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
else
    log_error "Nu pot detecta distribuzione Linux!"
    exit 1
fi

log_info "Distribuzione detectată: $OS"

# Instalare dependențe pe bază de distribuzione
case $OS in
    ubuntu|debian)
        log_info "Instalare pachete pe Ubuntu/Debian..."
        sudo apt-get update
        sudo apt-get install -y \
            build-essential \
            gcc \
            make \
            autoconf \
            automake \
            libtool \
            libssl-dev \
            libcrypt-dev \
            perl \
            git \
            curl \
            wget
        ;;

    rhel|centos|fedora)
        log_info "Instalare pachete pe RHEL/CentOS/Fedora..."
        sudo yum install -y \
            gcc \
            make \
            autoconf \
            automake \
            libtool \
            openssl-devel \
            libcrypt-devel \
            perl \
            git \
            curl \
            wget
        ;;

    alpine)
        log_info "Instalare pachete pe Alpine Linux..."
        sudo apk add --no-cache \
            build-base \
            gcc \
            make \
            autoconf \
            automake \
            libtool \
            openssl-dev \
            perl
        ;;

    *)
        log_error "Distribuzione $OS nu este suportată!"
        log_warn "Instalează manual: autoconf automake libtool build-essential openssl-dev"
        exit 1
        ;;
esac

# Verificare instalări
echo ""
echo -e "${GALBEN}═══════════════════════════════════════${NC}"
echo -e "${GALBEN}Verificare dependențe${NC}"
echo -e "${GALBEN}═══════════════════════════════════════${NC}"

MISSING=0

# Verifică gcc
if command -v gcc &> /dev/null; then
    log_success "GCC instalat: $(gcc --version | head -1)"
else
    log_error "GCC nu este instalat!"
    MISSING=1
fi

# Verifică make
if command -v make &> /dev/null; then
    log_success "Make instalat: $(make --version | head -1)"
else
    log_error "Make nu este instalat!"
    MISSING=1
fi

# Verifică autoconf
if command -v autoconf &> /dev/null; then
    log_success "Autoconf instalat: $(autoconf --version | head -1)"
else
    log_warn "Autoconf nu este instalat (optional)"
fi

# Verifică automake
if command -v automake &> /dev/null; then
    log_success "Automake instalat: $(automake --version | head -1)"
else
    log_warn "Automake nu este instalat (optional)"
fi

# Verifică libtool
if command -v libtool &> /dev/null; then
    log_success "Libtool instalat: $(libtool --version | head -1)"
else
    log_warn "Libtool nu este instalat (optional)"
fi

# Verifică OpenSSL
if pkg-config --exists openssl 2>/dev/null; then
    log_success "OpenSSL instalat"
else
    log_warn "OpenSSL development files nu sunt instalate"
fi

echo ""
if [ $MISSING -eq 0 ]; then
    echo -e "${VERDE}═══════════════════════════════════════${NC}"
    echo -e "${VERDE}✓ Toate dependențele obligatorii sunt instalate!${NC}"
    echo -e "${VERDE}═══════════════════════════════════════${NC}"
    echo ""
    echo -e "${GALBEN}Pași următori:${NC}"
    echo "  1. cd ~/ircu2"
    echo "  2. ./install.sh"
    exit 0
else
    echo -e "${ROSU}═══════════════════════════════════════${NC}"
    echo -e "${ROSU}✗ Lipsesc dependențe obligatorii!${NC}"
    echo -e "${ROSU}═══════════════════════════════════════${NC}"
    exit 1
fi

