Subversion Repositories SmartDukaan

Rev

Rev 4849 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/bin/bash

if [ $# -lt 1 ]
then
        echo "Usage: $0 <UPDATE|ROLLBACK>"
        exit 1
fi

ACTION=$1
if [ $ACTION != "UPDATE" -a $ACTION != "ROLLBACK" ]
then
        echo "Wrong input"
        echo "Usage: $0 <UPDATE|ROLLBACK>"
        exit 1
fi

# resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

# Get standard environment variables
PRGDIR=`dirname $(readlink -f "$PRG")`

MEDIA_EXPORT_PATH="/var/www/"
PARTNERS_PATH="/var/www/static.saholic.com/partners/"
WEBSITE_JAVASCRIPT_PATH="/var/www/static.saholic.com/js/"
DATE=`date +%Y-%b-%d_%Hh%Mm`
LOGFILE=${MEDIA_EXPORT_PATH}/${DATE}.log               # Log file Name
LOGERR=${MEDIA_EXPORT_PATH}/ERRORS-${DATE}.log         # Error Log file Name

# IO redirection for logging.
touch ${LOGFILE}
exec 6>&1           # Link file descriptor #6 with stdout.
                    # Saves stdout.
exec > ${LOGFILE}     # stdout replaced with file ${LOGFILE}.
touch ${LOGERR}
exec 7>&2           # Link file descriptor #7 with stderr.
                    # Saves stderr.
exec 2> ${LOGERR}     # stderr replaced with file ${LOGERR}.

DEPLOYED_TIMESTAMP=`cat /catalog-dumps/current.timestamp`
if [ $ACTION = "UPDATE" ]
then
        LATEST_TIMESTAMP=`cat /catalog-dumps/latest.timestamp`
        if [ "$DEPLOYED_TIMESTAMP" = "$LATEST_TIMESTAMP" ]
        then
                echo "Already latest version is deployed"
                exit 1
        fi
else
        LATEST_TIMESTAMP=`cat /catalog-dumps/previous.timestamp`
        if [ "INVALID" = "$LATEST_TIMESTAMP" ]
        then
                echo "Nothing to roll back"
                exit 1
        fi
fi


echo "Updating media files and document files"
echo "======================================================="
cd ${MEDIA_EXPORT_PATH}
if [ $ACTION == "UPDATE" ]
then
        rsync -az --delete media/  media-previous
        rsync -az --delete media-offline/  media
        rsync -az --delete documents/  documents-previous
        rsync -az --delete documents-offline/  documents
else
        rsync -az --delete media-previous/  media
        rsync -az --delete documents-previous/  documents
fi

echo "Updating product list for partners"
echo "======================================================="
cd ${MEDIA_EXPORT_PATH}
tar -zxf partners.tgz
unlink partners
ln -s partners-${LATEST_TIMESTAMP} partners
cp -r partners/* ${PARTNERS_PATH}

echo "Updating javascripts for product comparison"
echo "======================================================="
tar -zxf javascripts.tgz
unlink javascripts
ln -s javascripts-${LATEST_TIMESTAMP} javascripts
cp -r javascripts/* ${WEBSITE_JAVASCRIPT_PATH}

#Clean up IO redirection
exec 1>&6 6>&-      # Restore stdout and close file descriptor #6.
exec 2>&7 7>&-      # Restore stdout and close file descriptor #7.

if [ -s "${LOGERR}" ]
        then
                exit 1
        else
                exit 0
fi

if [ $ACTION == "UPDATE" ]
then
    cat /catalog-dumps/current.timestamp > /catalog-dumps/previous.timestamp
    echo ${LATEST_TIMESTAMP} > /catalog-dumps/current.timestamp
else
    echo ${LATEST_TIMESTAMP} > /catalog-dumps/current.timestamp
    echo "INVALID" > /catalog-dumps/previous.timestamp
fi