#!/bin/bash

# ======================================================================
# Archivo:       borrardistro
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Eliminar distro agregada con reprepro
# 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
# ----------------------------------------------------------------------

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

DIST_FILE="$REPO_PATH/conf/distributions"
CODENAME=$1

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

if [ -z "$CODENAME" ]; then
    echo "Uso: $(basename $0) <codename>"
    exit 1
fi

if [ ! -f "$DIST_FILE" ]; then
    echo "No se encontró el archivo de distribuciones en $DIST_FILE"
    exit 1
fi

# ----------------------------------------------------------------------
# Verificar que el codename existe
# ----------------------------------------------------------------------

if ! grep -qi "Codename:[[:space:]]*$CODENAME" "$DIST_FILE"; then
    echo "No existe una distro con codename '$CODENAME'."
    exit 1
fi

# ----------------------------------------------------------------------
# Hacer backup automático antes de modificar
# ----------------------------------------------------------------------

cp "$DIST_FILE" "$DIST_FILE.bak_$(date +%Y%m%d_%H%M%S)"
echo "Backup creado: $DIST_FILE.bak_$(date +%Y%m%d_%H%M%S)"

# ----------------------------------------------------------------------
# Borrar solo el bloque que contiene el codename
# ----------------------------------------------------------------------

awk -v cod="$CODENAME" '
BEGIN{RS=""; ORS="\n\n"} 
tolower($0) !~ tolower("Codename: " cod)
' "$DIST_FILE" > "$DIST_FILE.tmp" && mv "$DIST_FILE.tmp" "$DIST_FILE"

# ----------------------------------------------------------------------
# Borrar la carpeta en dists si existe
# ----------------------------------------------------------------------

if [ -d "$REPO_PATH/dists/$CODENAME" ]; then
    rm -rf "$REPO_PATH/dists/$CODENAME"
    echo "Carpeta $REPO_PATH/dists/$CODENAME eliminada."
fi

echo "Distro con codename '$CODENAME' eliminada del repo."
