#!/bin/sh
# preinstalador script for Emalibre
# resumen de los parametros de este script:
#        * <new-preinst> `install'
#        * <new-preinst> `install' <old-version>
#        * <new-preinst> `upgrade' <old-version>
#        * <old-preinst> `abort-upgrade' <new-version>
set -e
echo ""
printf "\033[1;35m***************************************************************\n" 
printf "Gracias por instalar EMA Libre Cliente (Carpincho)!!.\n"
printf '***************************************************************\033[0m\n'
echo ""
printf "\033[1;4m1) Comenzamos por verificar si ya existe configuracion personal...\033[0m\n"
case "$1" in
	install|upgrade)
	
	printf "\033[1;10m * 1.0) Se verifica y detiene si existe EMA Libre corriendo.\033[0m"
	# 0. Se detiene emalibre si existe instancia corriendo.
        # Versiones anteriores usaban stopall y borraban el PID sin parar.
        # Detener únicamente EMA_Web, incluso durante la primera migración.
        if [ -f /usr/share/emalibre/node_modules/forever/lib/forever.js ]; then
            NODE=/usr/share/emalibre/node_modules/node/bin/node
            # Compatibilidad al actualizar una instalación antigua sin runtime incluido.
            if [ ! -x "$NODE" ]; then
                NODE=$(command -v node || true)
            fi
            if [ -z "$NODE" ] || [ ! -x "$NODE" ]; then
                echo "No se encontró Node para detener la instalación anterior." >&2
                exit 1
            fi
            HOME=/root FOREVER_ROOT=/root/.forever "$NODE" - <<'JS'
const forever = require('/usr/share/emalibre/node_modules/forever');
const timer = setTimeout(() => process.exit(1), 15000);
forever.list(false, (err, processes) => {
    if (err) { console.error(err); process.exit(1); }
    if (!(processes || []).some(p => p.uid === 'EMA_Web')) {
        clearTimeout(timer); process.exit(0);
    }
    forever.stop('EMA_Web').on('stop', () => process.exit(0))
        .on('error', err => { console.error(err); process.exit(1); });
});
JS
        fi
	printf "\033[1;32m --> OK. \033[0m\n" 
	# 1. Se consulta si existe el archivo de configuracion
	if [ -f "/usr/share/emalibre/conf/ConfiguracionGeneral.js" ]; then
	    printf "\033[1;10m * 1.1) Existe un archivo de configuración en conf/, se realiza backup.\033[0m"
	    cp -f /usr/share/emalibre/conf/ConfiguracionGeneral.js /tmp || true
	    printf "\033[1;32m --> OK. \033[0m\n"
	elif [ -f "/usr/share/emalibre/package.nw/conf/ConfiguracionGeneral.js" ]; then
	    printf "\033[1;10m * 1.1) Existe un archivo de configuración en package.nw/conf/, se realiza backup.\033[0m"
	    cp -f /usr/share/emalibre/package.nw/conf/ConfiguracionGeneral.js /tmp || true
	    printf "\033[1;32m --> OK. \033[0m\n"
	else
	    printf "\033[1;10m * 1.1) Es una instalación nueva, no existe archivo de configuración.\033[0m"
	    printf "\033[1;32m --> OK. \033[0m\n"
	fi
	printf "\033[1;4m2) Comienza la instalación:\033[0m\n"
	;;
	abort-upgrade)
	printf "\033[1;31m Opps... ocurrio un error!!. \033[0m\n"
	;;

    *)
	printf "\033[1;31mOpps. preinst llamado con un argumento desconocido \`$1'  \033[0m\n" >&2
	exit 1
    ;;
esac
exit 0
