#!/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 ""