#!/bin/bash

# ======================================================================
# Archivo:       creardistro
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Crea una nueva distro para repositorio con reprepo
# 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=${1:-/repo}
DISTRO_NAME=$2
CODENAME=$3
COMPONENTS=${4:-main}  # default: main
DIST_FILE="$REPO_PATH/conf/distributions"

# ----------------------------------------------------------------------
# Comprobar parámetro
# ----------------------------------------------------------------------

if [ -z "$DISTRO_NAME" ] || [ -z "$CODENAME" ]; then
    echo "Uso: $0 /ruta/al/repo <nombre_distro> <codename> [componentes]"
    exit 1
fi

# ----------------------------------------------------------------------
# Comprobar existencia de la distro
# ----------------------------------------------------------------------

if grep -q "Codename: $CODENAME" "$DIST_FILE"; then
    echo "La distro con codename '$CODENAME' ya existe."
    exit 1
fi

# ----------------------------------------------------------------------
# Crear bloque de distro
# ----------------------------------------------------------------------

cat >> "$DIST_FILE" <<EOL

Origin: Quirinux
Label: Quirinux
Suite: $DISTRO_NAME
Codename: $CODENAME
Architectures: amd64 i386 all
Components: $COMPONENTS
Description: Quirinux $DISTRO_NAME
SignWith: yes
EOL

echo "Distro '$DISTRO_NAME' con codename '$CODENAME' agregada al repo."
