mirror of
https://github.com/HerculesWS/Hercules
synced 2026-08-15 12:23:13 -04:00
145 lines
4.2 KiB
Bash
Executable file
145 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# This file is part of Hercules.
|
|
# http://herc.ws - http://github.com/HerculesWS/Hercules
|
|
#
|
|
# Copyright (C) 2014-2015 Hercules Dev Team
|
|
#
|
|
# Hercules is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Base Author: Haru @ http://herc.ws
|
|
|
|
MODE="$1"
|
|
shift
|
|
|
|
function foo {
|
|
for i in "$@"; do
|
|
echo "> $i"
|
|
done
|
|
}
|
|
|
|
function usage {
|
|
echo "usage:"
|
|
echo " $0 createdb <dbname> [dbuser] [dbpassword]"
|
|
echo " $0 importdb <dbname> [dbuser] [dbpassword]"
|
|
echo " $0 build [configure args]"
|
|
echo " $0 test <dbname> [dbuser] [dbpassword]"
|
|
echo " $0 getplugins"
|
|
exit 1
|
|
}
|
|
|
|
function aborterror {
|
|
echo $@
|
|
exit 1
|
|
}
|
|
|
|
case "$MODE" in
|
|
createdb|importdb|test)
|
|
DBNAME="$1"
|
|
DBUSER="$2"
|
|
DBPASS="$3"
|
|
if [ -z "$DBNAME" ]; then
|
|
usage
|
|
fi
|
|
if [ "$MODE" != "test" ]; then
|
|
if [ -n "$DBUSER" ]; then
|
|
DBUSER="-u $DBUSER"
|
|
fi
|
|
if [ -n "$DBPASS" ]; then
|
|
DBPASS="-p$DBPASS"
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
case "$MODE" in
|
|
createdb)
|
|
echo "Creating database $DBNAME..."
|
|
mysql $DBUSER $DBPASS -e "create database $DBNAME;" || aborterror "Unable to create database."
|
|
;;
|
|
importdb)
|
|
echo "Importing tables into $DBNAME..."
|
|
mysql $DBUSER $DBPASS $DBNAME < sql-files/main.sql || aborterror "Unable to import main database."
|
|
mysql $DBUSER $DBPASS $DBNAME < sql-files/logs.sql || aborterror "Unable to import logs database."
|
|
;;
|
|
build)
|
|
(cd tools && ./validateinterfaces.py silent) || aborterror "Interface validation error."
|
|
./configure $@ || aborterror "Configure error, aborting build."
|
|
make sql -j3 || aborterror "Build failed."
|
|
make plugin.script_mapquit -j3 || aborterror "Build failed."
|
|
;;
|
|
test)
|
|
cat >> conf/import/login_conf.txt << EOF
|
|
ipban.sql.db_username: $DBUSER
|
|
ipban.sql.db_password: $DBPASS
|
|
ipban.sql.db_database: $DBNAME
|
|
account.sql.db_username: $DBUSER
|
|
account.sql.db_password: $DBPASS
|
|
account.sql.db_database: $DBNAME
|
|
account.sql.db_hostname: localhost
|
|
EOF
|
|
[ $? -eq 0 ] || aborterror "Unable to import configuration, aborting tests."
|
|
cat >> conf/import/inter_conf.txt << EOF
|
|
sql.db_username: $DBUSER
|
|
sql.db_password: $DBPASS
|
|
sql.db_database: $DBNAME
|
|
sql.db_hostname: localhost
|
|
char_server_id: $DBUSER
|
|
char_server_pw: $DBPASS
|
|
char_server_db: $DBNAME
|
|
char_server_ip: localhost
|
|
map_server_id: $DBUSER
|
|
map_server_pw: $DBPASS
|
|
map_server_db: $DBNAME
|
|
map_server_ip: localhost
|
|
log_db_id: $DBUSER
|
|
log_db_pw: $DBPASS
|
|
log_db_db: $DBNAME
|
|
log_db_ip: localhost
|
|
EOF
|
|
[ $? -eq 0 ] || aborterror "Unable to import configuration, aborting tests."
|
|
ARGS="--load-script npc/dev/test.txt "
|
|
ARGS="--load-plugin script_mapquit $ARGS --load-script npc/dev/ci_test.txt"
|
|
echo "Running Hercules with command line: ./map-server --run-once $ARGS"
|
|
./map-server --run-once $ARGS 2>runlog.txt
|
|
export errcode=$?
|
|
export teststr=$(cat runlog.txt)
|
|
if [[ -n "${teststr}" ]]; then
|
|
echo "Sanitizer errors found."
|
|
cat runlog.txt
|
|
aborterror "Sanitize errors found."
|
|
else
|
|
echo "No sanitizer errors found."
|
|
fi
|
|
if [ ${errcode} -ne 0 ]; then
|
|
echo "server terminated with exit code ${errcode}"
|
|
aborterror "Test failed"
|
|
fi
|
|
;;
|
|
getplugins)
|
|
echo "Cloning plugins repository..."
|
|
# Nothing to clone right now, all relevant plugins are part of the repository.
|
|
#git clone http://github.com/HerculesWS/StaffPlugins.git || aborterror "Unable to fetch plugin repository"
|
|
#if [ -f StaffPlugins/Haru/script_mapquit/script_mapquit.c -a -f StaffPlugins/Haru/script_mapquit/examples/ci_test.txt ]; then
|
|
# pushd src/plugins || aborterror "Unable to enter plugins directory."
|
|
# ln -s ../../StaffPlugins/Haru/script_mapquit/script_mapquit.c ./
|
|
# popd
|
|
#else
|
|
# echo "Plugin not found, skipping advanced tests."
|
|
#fi
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|