#!/bin/bash

# ======================================================================
# Archivo:       checkdepends
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Detectar dependencias que no puede satisfacer QApt
# Distribución:  Quirinux 2.x
# ======================================================================

#
# Copyright (c) 2019-2025 Charlie Martínez, derechos reservados.
# Licencia: https://www.gnu.org/licenses/gpl-2.0.txt
# Usos autorizados y no autorizados de la marca Quirinux:
# Ver https://www.quirinux.org/aviso-legal
#

# ----------------------------------------------------------------------
# Comprobar argumentos
# ----------------------------------------------------------------------

set -e

if [ -z "$1" ]; then
    echo "Uso: $0 paquete.deb"
    exit 1
fi

DEB="$1"

# ----------------------------------------------------------------------
# Verificar que el archivo existe
# ----------------------------------------------------------------------

[ -f "$DEB" ] || { echo "No se encontró el archivo $DEB"; exit 1; }

echo "Analizando dependencias del paquete $DEB ..."

# ----------------------------------------------------------------------
# Extraer las dependencias declaradas
# ----------------------------------------------------------------------

DEPS=$(dpkg-deb -I "$DEB" | grep -i '^ Depends:' | sed 's/Depends: //' | tr -d '\n' | tr ',' ' ')

echo "Dependencias declaradas:"
echo "$DEPS"
echo "---------------------------------"

# ----------------------------------------------------------------------
# Iterar sobre cada dependencia y verificar si QApt la ve como instalable
# ----------------------------------------------------------------------

for PKG in $DEPS; do
    # Extraer nombre real (sin versión)
    PKG_NAME=$(echo "$PKG" | cut -d' ' -f1 | cut -d'(' -f1)
    
    # QApt puede fallar si el paquete no está disponible
    if ! apt-cache show "$PKG_NAME" &>/dev/null; then
        echo "QApt NO encuentra el paquete: $PKG_NAME"
    else
        echo "Paquete OK: $PKG_NAME"
    fi
done

echo "---------------------------------"
echo "Chequeo terminado. Si algún paquete aparece como no encontrado, QApt fallará al instalar."
