# bash_check_deps
# ---------------
# Verifica existencia de comandos, directorios y archivos.
# Output formateado con colores via bash_log.
#
# USO (sourced):
#   source bash_check_deps.sh
#   check_command "docker" "DOCKER_NOT_FOUND" "Docker no esta instalado"
#   check_commands "git" "curl" "jq"
#   check_directory "/path/to/dir"
#   check_file "/path/to/file"

SCRIPT_DIR_BASH_CHECK="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR_BASH_CHECK/bash_log.sh"
bash_log_init

check_command() {
    local cmd="$1"
    local error_code="${2:-COMMAND_NOT_FOUND}"
    local description="${3:-El comando '$cmd' no esta disponible}"

    debug "Verificando comando: $cmd"

    if ! command -v "$cmd" &> /dev/null; then
        error "$description ($error_code)"
        return 1
    fi

    return 0
}

check_commands() {
    local failed=0
    for cmd in "$@"; do
        if ! command -v "$cmd" &> /dev/null; then
            error "Comando no encontrado: $cmd"
            failed=1
        fi
    done

    if [ $failed -eq 1 ]; then
        error "Faltan multiples dependencias requeridas"
        return 1
    fi

    return 0
}

check_directory() {
    local dir="$1"
    local error_msg="${2:-El directorio '$dir' no existe}"

    debug "Verificando directorio: $dir"

    if [ ! -d "$dir" ]; then
        error "$error_msg"
        return 1
    fi

    return 0
}

check_file() {
    local file="$1"
    local error_msg="${2:-El archivo '$file' no existe}"

    debug "Verificando archivo: $file"

    if [ ! -f "$file" ]; then
        error "$error_msg"
        return 1
    fi

    return 0
}
