#!/bin/bash

# ======================================================================
# Archivo:       listarpaquetes
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Listar paquetes del repositorio local de una distro
# 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 dependencia: reprepro
# ----------------------------------------------------------------------

if ! command -v reprepro >/dev/null 2>&1; then
    echo "Error: 'reprepro' no está instalado."
    echo "Debes instalarlo para poder ejecutar este script."
    echo "Ejemplo: apt install reprepro"
    exit 1
fi

# ----------------------------------------------------------------------
# Verificar ejecución como root
# ----------------------------------------------------------------------

if [ "$(id -u)" -ne 0 ]; then
    echo "Error: este script debe ejecutarse con permisos de root."
    exit 1
fi

# ----------------------------------------------------------------------
# Variables
# ----------------------------------------------------------------------

REPOBASE="/media/charlie/ARCHIVOS/Repo.quirinux.org"

# ----------------------------------------------------------------------
# Verificación de parámetro
# ----------------------------------------------------------------------

if [ -z "$1" ]; then
    echo "Uso: listarpaquetes <distro>"
    echo "Ejemplo: listarpaquetes quirinux2"
    exit 1
fi

DISTRO="$1"

# ----------------------------------------------------------------------
# Verifica existencia del repo
# ----------------------------------------------------------------------

cd "$REPOBASE" || {
    echo "Error: no se pudo acceder al repositorio."
    exit 1
}

# ----------------------------------------------------------------------
# Devuelve lista de paquetes del repo
# ----------------------------------------------------------------------

reprepro -b . list "$DISTRO" 2>/dev/null \
| cut -d: -f2 | awk '{print $1}' | sort -u \
|| {
    echo "Error: la distro '$DISTRO' no existe o no tiene paquetes."
    exit 1
}
