Created
August 25, 2011 17:50
-
-
Save felipe-prenholato/1171283 to your computer and use it in GitHub Desktop.
scripts/auxiliar/recreate_db_for_tests.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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