#!/usr/bin/env bash set -e export LOG_FILE=/tmp/update.$(date +"%Y%m%d").log rm -f ${LOG_FILE} decho () { echo `date +"%H:%M:%S"` $1 echo `date +"%H:%M:%S"` $1 >> ${LOG_FILE} } cat <<'FIG' _ | | __ _ _ __ ___ __ _ ___ ___ _ _ ___ ___ _ ____ _____ _ __ | |/ _` | '_ ` _ \ / _` / __/ __| | | |_____/ __|/ _ \ '__\ \ / / _ \ '__| | | (_| | | | | | | (_| \__ \__ \ |_| |_____\__ \ __/ | \ V / __/ | |_|\__,_|_| |_| |_|\__,_|___/___/\__,_| |___/\___|_| \_/ \___|_| FIG echo -e "\nStarting \033[1mlamassu-server\033[0m update. This will take a few minutes...\n" if [ "$(whoami)" != "root" ]; then echo -e "This script has to be run as \033[1mroot\033[0m user" exit 3 fi decho "stopping lamassu-server" supervisorctl stop lamassu-server >> ${LOG_FILE} 2>&1 supervisorctl stop lamassu-admin-server >> ${LOG_FILE} 2>&1 decho "updating node" npm install n -g >> ${LOG_FILE} 2>&1 n lts >> ${LOG_FILE} 2>&1 decho "version installed $(node -v)" if [ -d "/usr/lib/node_modules/lamassu-server" ]; then decho "renaming old lamassu-server instance to lamassu-server-old" mv "/usr/lib/node_modules/lamassu-server" "/usr/lib/node_modules/lamassu-server-old" fi decho "updating lamassu-server" npm -g install lamassu/lamassu-server#stable --unsafe-perm >> ${LOG_FILE} 2>&1 decho "rebuilding npm deps" cd $(npm root -g)/lamassu-server/ >> ${LOG_FILE} 2>&1 npm rebuild >> ${LOG_FILE} 2>&1 decho "running migration" lamassu-migrate >> ${LOG_FILE} 2>&1 lamassu-migrate-config >> ${LOG_FILE} 2>&1 decho "updating supervisor conf" export NPM_BIN=$(npm -g bin) perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-server/g' /etc/supervisor/conf.d/lamassu-server.conf >> ${LOG_FILE} 2>&1 perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-admin-server/g' /etc/supervisor/conf.d/lamassu-admin-server.conf >> ${LOG_FILE} 2>&1 decho "updating lamassu-server" supervisorctl update lamassu-server >> ${LOG_FILE} 2>&1 supervisorctl update lamassu-admin-server >> ${LOG_FILE} 2>&1 decho "updating backups conf" BACKUP_CMD=${NPM_BIN}/lamassu-backup-pg BACKUP_CRON="@daily $BACKUP_CMD > /dev/null" ( (crontab -l 2>/dev/null || echo -n "") | grep -v '@daily.*lamassu-backup-pg'; echo $BACKUP_CRON ) | crontab - >> $LOG_FILE 2>&1 $BACKUP_CMD >> $LOG_FILE 2>&1 decho "Update complete!"