279 lines
13 KiB
Bash
Executable File
279 lines
13 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#PARAMETRIA
|
|
VERSION=`grep Version src/conf/ConfiguracionGlobal.js | sed -e "s/'Version': //g" | sed -e "s/,//g" | sed -e "s/^[ \t]*//"`
|
|
NWJS_VERSION='0.94.0'
|
|
|
|
# DEPENDENCIAS
|
|
NW_GYP_INST=`npm list -g | grep nw-gyp@ | grep -v deduped | wc -l`
|
|
NW_BUILDER_INST=`npm list | grep nw-builder@ | grep -v deduped | wc -l`
|
|
node=`node -v | wc -l`
|
|
npm=`npm -v | wc -l`
|
|
|
|
# Metodo Spinner
|
|
function spinner() {
|
|
local info="$1"
|
|
local pid=$!
|
|
local delay=0.25
|
|
local spinstr='|/-\'
|
|
while kill -0 $pid 2> /dev/null; do
|
|
local temp=${spinstr#?}
|
|
printf " [%c] $info" "$spinstr"
|
|
local spinstr=$temp${spinstr%"$temp"}
|
|
sleep $delay
|
|
local reset="\b\b\b\b\b"
|
|
for ((i=1; i<=$(echo $info | wc -c); i++)); do
|
|
reset+="\b"
|
|
done
|
|
printf $reset
|
|
done
|
|
printf " \b\b\b\b"
|
|
}
|
|
# ***********************************************************
|
|
# EJECUCION DE CODIGO -- LIMPIA Y VERIFICA ENTORNO
|
|
# ***********************************************************
|
|
echo ""
|
|
echo "*************************************************"
|
|
echo "* Comprobando y preparando el entorno ***"
|
|
echo "*************************************************"
|
|
echo ""
|
|
printf "\033[1;4m--->Version de EmaL: $VERSION \033[0m\n"
|
|
printf "\033[1;4m--->Version de NWJs: $NWJS_VERSION \033[0m\n"
|
|
echo ""
|
|
printf "\033[1;10m1) Limpiando compilacion anterior. \033[0m"
|
|
sudo mkdir build/Deb64/usr/bin 2> /dev/null
|
|
sudo mkdir build/Deb64/usr/share/emalibre 2> /dev/null
|
|
sudo rm -fr build/emalibre/linux64
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m2) Instalando/comprobando paquetes con APT necesarios. \033[0m"
|
|
sudo apt-get -y -qq install build-essential git wget libusb-1.0-0 libusb-1.0-0-dev libudev-dev
|
|
sudo chmod -R 777 build/Deb64
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m3) Verificando node y dependencias: \033[0m\n"
|
|
printf "\033[1;10m 3.1) Comprobando si esta node global. \033[0m"
|
|
if [ $node -eq 1 ]
|
|
then
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
else
|
|
printf "\033[1;31m --> NO. \033[0m"
|
|
printf "\033[1;32m --> Se sale, por favor instale manualmente. \033[0m\n"
|
|
exit 0
|
|
fi
|
|
printf "\033[1;10m 3.2) Comprobando si esta npm global. \033[0m"
|
|
if [ $npm -eq 1 ]
|
|
then
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
else
|
|
printf "\033[1;31m --> NO. \033[0m"
|
|
printf "\033[1;32m --> Se sale, por favor instale manualmente. \033[0m\n"
|
|
exit 0
|
|
fi
|
|
printf "\033[1;10m 3.3) Comprobando si esta nw-gyp como global. \033[0m"
|
|
if [ $NW_GYP_INST -eq 1 ]
|
|
then
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
else
|
|
printf "\033[1;31m --> NO. \033[0m"
|
|
npm install -g nw-gyp -no-audit -silent 2> /tmp/ema.log 1> /dev/null
|
|
printf "\033[1;32m --> Se instalo. \033[0m\n"
|
|
fi
|
|
printf "\033[1;10m 3.4) Comprobando si nw-builder localmente. \033[0m"
|
|
if [ $NW_BUILDER_INST -eq 1 ]
|
|
then
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
else
|
|
printf "\033[1;31m --> NO. \033[0m"
|
|
npm install -no-audit -silent 2> /tmp/ema.log 1> /dev/null
|
|
printf "\033[1;32m --> Se instalo. \033[0m\n"
|
|
fi
|
|
printf "\033[1;10m4) Empaquetando el proyecto emalibre. \033[0m"
|
|
CHECK_EMPAQUETADO=`node empaquetarLinux.js | grep "Correcto!" | wc -l`
|
|
if [ "${CHECK_EMPAQUETADO}" -eq "1" ]; then printf "\033[1;32m --> OK. \033[0m\n"; else printf "\033[5;91m --> ERROR. Problema empaquetando con nw-builder. \033[0m\n";exit 1; fi
|
|
printf "\033[1;10m5) Aplicando Permisos al proyecto. \033[0m"
|
|
sudo chmod -R 777 build/emalibre/linux64 & spinner "Procesando..."
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m6) Eliminando node_modules del proyecto. \033[0m"
|
|
sudo rm -fr build/emalibre/linux64/node_modules & spinner "Procesando..."
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m7) Generando node_modules con NPM del proyecto. \033[0m"
|
|
cd build/emalibre/linux64
|
|
npm install ---production -no-audit -silent 2> /tmp/ema.log 1> /dev/null
|
|
printf "\033[1;32m --> OK. \033[0m\n";
|
|
printf "\033[1;10m8) Se purgan los tanques y logs. \033[0m"
|
|
sudo echo "" > logs/debug.log
|
|
sudo echo "[]" > logs/TanquePendientes.log
|
|
sudo echo "[]" > logs/registro_diario.log
|
|
printf "\033[1;32m --> OK. \033[0m\n";
|
|
printf "\033[1;10m9) Se blanquea el archivo de Configuracion General. \033[0m"
|
|
sudo cp ../../conf/ConfiguracionGeneral.js conf/ConfiguracionGeneral.js
|
|
printf "\033[1;32m --> OK. \033[0m\n";
|
|
cd ..
|
|
sudo cp -R linux64 Linux64_nogui # Se copia antes del postLINUX (que implementa NWJS) para el modo consola y web
|
|
sudo chmod -R 777 Linux64_nogui
|
|
cd linux64
|
|
npm run postLINUX -no-audit -silent 2> /tmp/ema.log 1> /dev/null & spinner "Procesando..."
|
|
CHECK_NW_NODE_BUILD=`cat /tmp/ema.log | grep "gyp info ok" | wc -l`
|
|
if [ "${CHECK_NW_NODE_BUILD}" -eq "1" ]; then printf "\033[1;32m --> OK. \033[0m\n"; else printf "\033[5;91m --> ERROR. Verifique el modulo NW con node-hid. \033[0m\n";exit 1; fi
|
|
cd ../../..
|
|
|
|
# **************************************************************
|
|
# Compilar EMA Libre Cliente (Carpincho) en modo GRAFICO Desktop
|
|
# **************************************************************
|
|
echo ""
|
|
echo ""
|
|
echo "*************************************************"
|
|
echo "* Build EMA Libre Cliente Grafico - GNU/Linux *"
|
|
echo "*************************************************"
|
|
echo ""
|
|
printf "\033[1;10m1) Limpiando archivos temporales. \033[0m"
|
|
sudo rm -f build/Deb64/DEBIAN/control
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m2) Copiando los fuentes de EMA Libre para 64bit. \033[0m"
|
|
sudo cp -R build/emalibre/linux64/* build/Deb64/usr/share/emalibre/
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m3) Remplazando el archivo de control DEB. \033[0m"
|
|
sudo cp -f build/controlDeb/control_linux_gui build/Deb64/DEBIAN/control & spinner "Procesando..."
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m4) Aplicando permisos necesarios. \033[0m"
|
|
sudo chmod +x build/Deb64/usr/share/emalibre/emalibre
|
|
sudo chmod 0755 build/Deb64/DEBIAN
|
|
sudo chmod 0755 build/Deb64/DEBIAN/postrm
|
|
sudo chmod 0755 build/Deb64/DEBIAN/postinst
|
|
sudo chmod 0755 build/Deb64/DEBIAN/preinst
|
|
sudo chown -R root:root build/Deb64
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m5) Generando enlaces simbolicos del binario. \033[0m"
|
|
cd build/Deb64/usr/bin/
|
|
sudo ln -s ../share/emalibre/emalibre emalibre
|
|
cd ../../..
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m6) Eliminando node/web/express/forever/servicio para modo GUI y la intefaz para consola/web. \033[0m"
|
|
# se mueve el servicio desde al temporal
|
|
sudo mv Deb64/etc/init.d tmp
|
|
sudo mv Deb64/etc/emalibre_modo tmp
|
|
sudo rm -fr Deb64/usr/share/emalibre/node_modules/node
|
|
sudo rm -fr Deb64/usr/share/emalibre/node_modules/express
|
|
sudo rm -fr Deb64/usr/share/emalibre/node_modules/forever
|
|
sudo rm -fr Deb64/usr/share/emalibre/node_modules/forever-agent
|
|
sudo rm -fr Deb64/usr/share/emalibre/node_modules/forever-monitor
|
|
sudo rm -fr Deb64/usr/share/emalibre/gui_web
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m7) Generando Paquete Deb para GUI 64bit Linux. \033[0m\n"
|
|
sudo dpkg -b Deb64 debs/"emalibre-gui-linux_$VERSION.deb"
|
|
# se vuelve el servicio desde el temporal
|
|
sudo mv tmp/init.d Deb64/etc
|
|
sudo mv tmp/emalibre_modo Deb64/etc/emalibre_modo
|
|
printf "\033[5;10m Finalizo con exito, build/debs/emalibre-gui-linux_$VERSION.deb. \033[0m"
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m8) Limpiando archivos temporales. \033[0m"
|
|
cd ..
|
|
sudo rm -f build/Deb64/DEBIAN/control
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
|
|
# ***********************************************************
|
|
# Compilar EMA Libre Cliente (Carpincho) en modo CONSOLA
|
|
# ***********************************************************
|
|
echo ""
|
|
echo ""
|
|
echo "*************************************************"
|
|
echo "* Build EMA Libre Cliente Consola - GNU/Linux *"
|
|
echo "*************************************************"
|
|
echo ""
|
|
printf "\033[1;10m1) Limpiando archivos temporales. \033[0m"
|
|
sudo rm -f build/Deb64/DEBIAN/control
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m2) Copiando los fuentes de EMA Libre para 64bit. \033[0m"
|
|
sudo cp -R build/emalibre/Linux64_nogui/core build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/logs build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/conf build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/tmp build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/node_modules build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/CHANGELOG build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/COPYING build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/AUTHORS build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/package.json build/Deb64/usr/share/emalibre/
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m3) Remplazando el archivo de control DEB. \033[0m"
|
|
sudo cp -f build/controlDeb/control_linux_console build/Deb64/DEBIAN/control & spinner "Procesando..."
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m4) Aplicando permisos necesarios. \033[0m"
|
|
sudo chmod 0755 build/Deb64/DEBIAN
|
|
sudo chmod 0755 build/Deb64/DEBIAN/postrm
|
|
sudo chmod 0755 build/Deb64/DEBIAN/postinst
|
|
sudo chmod 0755 build/Deb64/DEBIAN/preinst
|
|
sudo chown -R root:root build/Deb64
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
cd build
|
|
printf "\033[1;10m7) Generando Paquete Deb para Consola 64bit Linux. \033[0m\n"
|
|
sudo dpkg -b Deb64 debs/"emalibre-consola-linux_$VERSION.deb"
|
|
printf "\033[5;10m Finalizo con exito, build/debs/emalibre-console-linux_$VERSION.deb. \033[0m"
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m8) Limpiando archivos temporales. \033[0m"
|
|
cd ..
|
|
sudo rm -f build/Deb64/DEBIAN/control
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
echo ""
|
|
|
|
# ***********************************************************
|
|
# Compilar EMA Libre Cliente (Carpincho) en modo CONSOLA/WEB
|
|
# ***********************************************************
|
|
echo ""
|
|
echo ""
|
|
echo "*************************************************"
|
|
echo "* Build EMA Libre Cliente Web - GNU/Linux *"
|
|
echo "*************************************************"
|
|
echo ""
|
|
printf "\033[1;10m1) Limpiando archivos temporales. \033[0m"
|
|
sudo rm -f build/Deb64/DEBIAN/control
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m2) Copiando los fuentes de EMA Libre para 64bit. \033[0m"
|
|
sudo cp -R build/emalibre/Linux64_nogui/core build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/logs build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/conf build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/gui_web build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/gui_common build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/tmp build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/node_modules build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/CHANGELOG build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/COPYING build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/AUTHORS build/Deb64/usr/share/emalibre/
|
|
sudo cp -R build/emalibre/Linux64_nogui/package.json build/Deb64/usr/share/emalibre/
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m3) Remplazando el archivo de control DEB. \033[0m"
|
|
sudo cp -f build/controlDeb/control_linux_web build/Deb64/DEBIAN/control & spinner "Procesando..."
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m4) Aplicando permisos necesarios. \033[0m"
|
|
sudo echo "web" > build/Deb64/etc/emalibre_modo
|
|
sudo chmod 0755 build/Deb64/DEBIAN
|
|
sudo chmod 0755 build/Deb64/DEBIAN/postrm
|
|
sudo chmod 0755 build/Deb64/DEBIAN/postinst
|
|
sudo chmod 0755 build/Deb64/DEBIAN/preinst
|
|
sudo chown -R root:root build/Deb64
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
cd build
|
|
printf "\033[1;10m7) Generando Paquete Deb para Web 64bit Linux. \033[0m\n"
|
|
sudo dpkg -b Deb64 debs/"emalibre-web-linux_$VERSION.deb"
|
|
printf "\033[5;10m Finalizo con exito, build/debs/emalibre-console-linux_$VERSION.deb. \033[0m"
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
printf "\033[1;10m8) Limpiando archivos temporales. \033[0m"
|
|
cd ..
|
|
sudo rm -f build/Deb64/DEBIAN/control
|
|
sudo rm -fr build/Deb64/usr/bin/*
|
|
sudo rm -fr build/Deb64/usr/share/emalibre/*
|
|
sudo rm -fr build/emalibre
|
|
printf "\033[1;32m --> OK. \033[0m\n"
|
|
echo ""
|
|
|