Files
sysPass/tests/res/scripts/reset_db.sh
Rubén D 41703b50f9 * [MOD] Strict type checking (WIP)
Signed-off-by: Rubén D <nuxsmin@syspass.org>
2020-12-20 14:24:42 +01:00

124 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
: ${SQL_FILE:=}
: ${DB_NAME:=}
: ${DB_CONTAINER_NAME:=}
usage() {
echo "Usage: $0 [ -s SQL_FILE ] [ -d DB_NAME ] [ -p PROJECT_DIR ] [ -C DB_CONTAINER_NAME ]" 1>&2
}
exit_abnormal() {
usage
exit 1
}
do_import() {
case ${DB_NAME} in
"syspass")
mysql -h ${DB_HOST} -u root -psyspass ${DB_NAME} <${PROJECT_DIR}/schemas/dbstructure.sql
mysql -h ${DB_HOST} -u root -psyspass ${DB_NAME} <${SQL_FILE}
;;
"syspass-test")
mysql -h ${DB_HOST} -u root -psyspass -e 'DROP DATABASE IF EXISTS `'"${DB_NAME}"'`;'
mysql -h ${DB_HOST} -u root -psyspass -e 'CREATE DATABASE `'"${DB_NAME}"'` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;'
mysql -h ${DB_HOST} -u root -psyspass ${DB_NAME} <${SQL_FILE}
;;
*)
echo "Database name not set"
exit 1
;;
esac
if [[ $? -eq 0 ]]; then
echo "Database data imported"
fi
}
restart_db_container() {
echo "Restarting DB container ..."
docker restart ${DB_CONTAINER_NAME}
sleep 15
}
get_db_host() {
DB_HOST=$(docker inspect ${DB_CONTAINER_NAME} --format {{.NetworkSettings.Networks.bridge.IPAddress}})
if [[ -z "${DB_HOST}" ]]; then
echo "Couldn't guess DB host from Docker container '${OPTARG}"
exit_abnormal
fi
echo "Database host: ${DB_HOST}"
}
check_options() {
if [ -z "${DB_NAME}" ]; then
echo "Database name not set"
exit_abnormal
fi
if [ -z "${SQL_FILE}" ]; then
echo "SQL file not set"
exit_abnormal
fi
if [ -z "${DB_CONTAINER_NAME}" ]; then
echo "Database container name not set"
exit_abnormal
fi
}
while getopts ":hs:d:p:C:" OPTIONS; do
case "${OPTIONS}" in
h)
usage
;;
s)
SQL_FILE=${OPTARG}
if [[ ! -e "${SQL_FILE}" ]]; then
echo "SQL file does not exist: ${SQL_FILE}"
exit_abnormal
fi
echo "SQL file: ${SQL_FILE}"
;;
d)
DB_NAME=${OPTARG}
echo "Database name: ${DB_NAME}"
;;
p)
PROJECT_DIR=${OPTARG}
echo "Project dir: ${PROJECT_DIR}"
;;
C)
DB_CONTAINER_NAME=${OPTARG}
echo "Database container name: ${DB_CONTAINER_NAME}"
# Avoid memory leaks
restart_db_container
get_db_host
;;
:)
echo "$0: Must supply an argument to -$OPTARG." >&2
exit_abnormal
;;
?)
echo "Invalid option: -${OPTARG}."
exit_abnormal
;;
*)
exit_abnormal
;;
esac
done
check_options
do_import