#!/bin/sh # preinstalador script for Emalibre # resumen de los parametros de este script: # * `install' # * `install' # * `upgrade' # * `abort-upgrade' 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