#!/bin/sh

export PATH=/usr/bin:/bin:$PATH

INST_DIR=opt/webservice
CUR_INST_DIR=/${INST_DIR}
RPM_DIR=/var/${INST_DIR}/sysbackup
BUILD_ROOT=${RPM_DIR}/buildroot
CONFIG_DIR=${CUR_INST_DIR}/config
SPEC_FILE=${CONFIG_DIR}/webservice.spec
NEW_SPEC_FILE=${RPM_DIR}/SPECS/webservice.spec
LOG_DIR=var/log/webservice
ULOC_DIR=usr/local/bin
DATA_DIR=var/${INST_DIR}
SW_REPO_DIR=${DATA_DIR}/swupdate
DEPLOY_DIR=${INST_DIR}/deploy
HA_CONF_DIR=var/opt/ha/conf
SYSBACKUP_FILES="/var/opt/webservice/ngsdb-backup.zip"
SYSBACKUP_DIR=/var/opt/sysbackup
BUILD_OPTS="--bb --buildroot ${BUILD_ROOT} --target i586"
BACKUP_DATE=`date +"%Y_%m_%d_%H"`
. ${CUR_INST_DIR}/install/db.properties

function remove_build_dir
{
  if [ -d ${RPM_DIR} ]
  then
    echo "Removing old build directory structure ${RPM_DIR}"
    rm -rf --preserve-root ${RPM_DIR}
  fi
}

remove_build_dir

# create new build directory structure
mkdir -pv ${RPM_DIR}
cd ${RPM_DIR}
mkdir -pv BUILD RPMS SOURCES SPECS SRPMS ${BUILD_ROOT}
cd ${BUILD_ROOT}
mkdir -pv ${INST_DIR} ${LOG_DIR} ${ULOC_DIR} ${DATA_DIR} ${SW_REPO_DIR} ${DEPLOY_DIR} ${HA_CONF_DIR}

# execute data backup
${CUR_INST_DIR}/install/ngs-db-backup.sh || exit 1

# fill build structure (spec, icon, files, ...)
echo "Fill build structure (spec, files, backup data, ...)"
cp -af ${SPEC_FILE} ${RPM_DIR}/SPECS/ || exit 1
cp -af ${CUR_INST_DIR}/* ${BUILD_ROOT}/${INST_DIR} || exit 1
cp -af /${ULOC_DIR}/webservice_sysbackup ${BUILD_ROOT}/${ULOC_DIR} || exit 1
cp -af /${ULOC_DIR}/shellinaboxd ${BUILD_ROOT}/${ULOC_DIR} || exit 1
mkdir -pv ${WEBSERVICE_VAR_DIR} || exit 1

# copy the ngs data file to sysbackup directory
cp -avf ${NGS_BACKUP_FILE} ${SYSBACKUP_DIR}/  || exit 1
mv ${NGS_BACKUP_FILE} ${BUILD_ROOT}${WEBSERVICE_VAR_DIR} || exit 1


# remove unneeded files
cd ${BUILD_ROOT}/${INST_DIR}/tomcat/webapps
rm -rf SENTheme-5.2.3.1/ ngsportlet/ introductionSENportlet-5.2.3.1/ welcomeSENportlet-5.2.3.1/
rm -rf ${BUILD_ROOT}/${INST_DIR}/tomcat/temp/*
rm -rf ${BUILD_ROOT}/${INST_DIR}/tomcat/work/*
rm -rf ${BUILD_ROOT}/${INST_DIR}/data/lucene

# change spec file to reflect system backup
sed -e "/^Release:/ s/sysbackup_.*//; \
        /^Packager:/ s/sysbackup_.*//; \
        /^Packager:/ s/$/ sysbackup_${BACKUP_DATE}/; \
        /^#sysbackup_start/,/^#sysbackup_end/ { /^[^#]/ d }; \
        /^#sysbackup_start/ a\\${SYSBACKUP_FILES}" ${NEW_SPEC_FILE} > ${NEW_SPEC_FILE}_sed
mv ${NEW_SPEC_FILE}_sed ${NEW_SPEC_FILE}

# create rpm package
cd ${BUILD_ROOT}
rpmbuild ${BUILD_OPTS} --define "_topdir ${RPM_DIR}" ${RPM_DIR}/SPECS/webservice.spec || exit 1

# copy rpm file to sysbackup directory
mkdir -pv ${SYSBACKUP_DIR} || exit 1
cp -avf ${RPM_DIR}/RPMS/i586/*.rpm ${SYSBACKUP_DIR}/ || exit 1

# cleanup
remove_build_dir

exit 0

