Skip to content

Instantly share code, notes, and snippets.

@felipe-prenholato
Created August 25, 2011 17:50
Show Gist options
  • Save felipe-prenholato/1171283 to your computer and use it in GitHub Desktop.
Save felipe-prenholato/1171283 to your computer and use it in GitHub Desktop.
scripts/auxiliar/recreate_db_for_tests.sh
#!/bin/bash
function readlink_f () { X_=`pwd`; cd $1 && echo `pwd` && cd $X_; }
_SCRIPT_RELATIVE_PATH="scripts/auxiliar/recreate_db_for_tests.sh"
_DB=$1
_DBDUMP=$2
_VERSION=$3
_PORTAL_PATH=$(readlink_f $0 | sed -e "s,${_SCRIPT_RELATIVE_PATH},,")
_VERSION_UPDATE_DIR="${_PORTAL_PATH}scripts/updates/$_VERSION"
if [[ "$_DB" == "sisweb" ]];
then
echo -e "YOU ARE INSANE TRYING TO DROP/CREATE PRODUCTION DB!?!!?!?!?!? DO IT MANUALLY."
exit 1
exit 1
exit 1
fi
export PYTHONPATH="$(readlink -f $(dirname $0)/../../):$(readlink -f $(dirname $0)/../../../)"
BASEPATH="$(readlink -f $(dirname $0))"
ROOTPATH="$(readlink -f $(dirname $0)/../../)"
export DJANGO_SETTINGS_MODULE="portal.settings"
# need to force python2.6 because way that we installed python 2.6 in centos
export DATA=$(python -c "from django.conf import settings;import os,sys; print \"%s|%s|%s\" % (settings.DATABASES['default']['USER'],settings.DATABASES['default']['PASSWORD'],settings.DATABASES['default']['NAME']);")
export DBUSER=$(echo $DATA | awk -F'|' '{print $1}')
export DBPASS=$(echo $DATA | awk -F'|' '{print $2}')
export DBNAME=$(echo $DATA | awk -F'|' '{print $3}')
echo "'$DBUSER'"
echo "'$DBPASS'"
export _PASSPARAM=""
[[ -n "$DBPASS" ]] && export _PASSPARAM="-p\"$DBPASS\""
echo "'$_PASSPARAM'"
_ERRORS=0
[[ -n "$_DB" ]] || _ERRORS=1
[[ -n "$_DBDUMP" ]] || _ERRORS=1
#[[ -n "$_VERSION" ]] || _ERRORS=1
[[ "$_ERRORS" -eq "1" ]] && echo -e "$(basename $0): You should use $0 <dbname> <dbdump_file> [<update_scripts_dirname>]" && exit 1
echo -e "PORTAL PATH: $_PORTAL_PATH"
echo -e "DBNAME: $_DB"
if [[ -f "$_DBDUMP" ]];
then
echo -e "DBDUMP: $_DBDUMP"
else
echo -e "DBDUMP_FILE $_DBDUMP doesn't exist!"
_ERRORS=1
fi
if [[ -n "$_VERSION" ]];
then
if [[ -d "$_VERSION_UPDATE_DIR" ]];
then
echo -e "VERSION UPDATE DIR: $_VERSION_UPDATE_DIR"
else
echo -e "UPDATE_SCRIPTS_DIR $_VERSION_UPDATE_DIR doesn't exist!"
fi
fi
if [[ "$_ERRORS" -eq "1" ]];
then
echo -e "\nFix the errors first!"
exit 1
fi
_POPULATED=0
mysql -u $DBUSER $_PASSPARAM -v -e "drop database $_DB";
mysql -u $DBUSER $_PASSPARAM -v -e "create database $_DB";
if [[ "$?" -eq "0" ]]
then
[[ "${_DBDUMP:(-7)}" = "sql.bz2" ]] && bzcat $_DBDUMP | mysql -u $DBUSER $_PASSPARAM $_DB && _POPULATED=1
[[ "${_DBDUMP:(-3)}" = "sql" ]] && cat $_DBDUMP | mysql -u $DBUSER $_PASSPARAM $_DB && _POPULATED=1
[[ $_POPULATED -eq 1 ]] && echo -e "\nPopulated $_DB with $_DBDUMP."
else
echo -e "Failed on create db"
exit 1
fi
[[ $_POPULATED -eq 0 ]] && echo -e "\nPopulation of DB $_DB with $_DBDUMP failed!" && exit 1
if [[ -z $_VERSION ]];
then
echo -e "Any scripts to run..." && exit 0
else
echo -e "\nRunning executable update scripts at $_VERSION_UPDATE_DIR ..."
chmod +x ${_VERSION_UPDATE_DIR}/{0,1}*.{sh,py} &>/dev/null
for script in $(ls -1 $_VERSION_UPDATE_DIR/*.{py,sh} 2>/dev/null| sort);
do
_RUN=0
_FAIL=0
[[ -f $script ]] && [[ -x $script ]] && _RUN=1
if [[ $_RUN -eq 1 ]];
then
echo -e "\n\nRunning $script ..."
sleep 1
$script || _FAIL=1
fi
[[ $_FAIL -eq 1 ]] && echo -e "\n\n\nFailed at $script!" && exit 1
done
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment