#!/bin/bash
REPO_URL="https://bob.virtualhostcr.com/latest-scripts/"
MAIN_SCRIPT_PATH="/root/work/nextcloud-backup_main.sh"
MAIN_SCRIPT_NAME="rsync-nextcloud/nextcloud-backup_main.sh"
MUTTRC="/root/.backup_mail_cred.txt"
DEBUG=0


initialize() {
    # Call the initialize function from the main script if requested
    if [ "$INITIALIZE" -eq 1 ]; then
        echo "Inicializando configuración..."
        read -s -p "Ingrese la contraseña SMTP para el correo de respaldo: " smtpPasswd
	echo
	echo $smtpPasswd > $MUTTRC
	chmod 600 $MUTTRC
	echo "Downloading first main version..."
        curl -sSL -o "${MAIN_SCRIPT_PATH}" "${REPO_URL}${MAIN_SCRIPT_NAME}"
	chmod +x $MAIN_SCRIPT_PATH
	echo "Completed.... re-run  '$MAIN_SCRIPT_PATH' "
	exit 0
        else
            echo "No se puede inicializar: el script principal no existe."
            exit 1
    fi
}

getoptions() {
    # Parse command line options and prepare arguments to forward to the main script.
    # Supported: --help, --version, --initialize
    INITIALIZE=0

    while [[ $# -gt 0 ]]; do
        case "$1" in
            --help|-h)
                echo "Uso: $(basename "$0") [opciones]"
                echo "  --help        Muestra esta ayuda"
                echo "  --version     Muestra la versión del script"
                echo "  --initialize  Inicializa o resetea configuraciones necesarias"
                exit 0
                ;;
            --debug)
                DEBUG=1
                shift
                ;;
            --version|-v)
                echo "nextcloud-backup launcher version 1.0"
                exit 0
                ;;
            --initialize)
                INITIALIZE=1
                initialize
                shift
                ;;
            *)
                # forward any unknown option/argument to the main script
                shift
                ;;
        esac
    done
}



# Parse command line options early so they get forwarded to the main script
getoptions "$@"

if [ ! -f $MUTTRC ]; then
    echo "Error: El archivo de configuración SMTP no existe. Por favor, inicialice primero con --initialize."
    exit 1
fi 

echo "Lanzador iniciado. Verificando versión del script principal..."
curl -sSL -o "${MAIN_SCRIPT_PATH}.new" "${REPO_URL}${MAIN_SCRIPT_NAME}"
LATEST_HASH=$(curl -sSL "${REPO_URL}/sha256sum.txt" |grep $MAIN_SCRIPT_NAME | awk '{print $1}')
DOWNLOAD_HASH=$(sha256sum "${MAIN_SCRIPT_PATH}.new" | awk '{print $1}')

if [ "$LATEST_HASH" == "$DOWNLOAD_HASH" ]; then
    mv "${MAIN_SCRIPT_PATH}.new" "$MAIN_SCRIPT_PATH"
    chmod +x "$MAIN_SCRIPT_PATH"
    echo "Script principal actualizado o verificado. Ejecutando..."
    # Ejecuta el script principal
    "$MAIN_SCRIPT_PATH"
else
    echo "Error en la verificación del hash. Usando la versión local si existe."
    if [ -f "$MAIN_SCRIPT_PATH" ]; then
        if [ "$DEBUG" -eq 1 ]; then
            echo "DEBUG: Versión local encontrada. Ejecutando el script principal existente."
            bash -x "MAIN_SCRIPT_PATH"
        else
        "$MAIN_SCRIPT_PATH"
        fi
    else
        echo "No hay una versión local segura para ejecutar."
        exit 1
    fi
fi
