X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=upgrade%2Finc%2Fpervasive.sh;h=d0a1992198f798d6f438529bf2d47142b951fd81;hb=cc9dc1ddd643ad6ff206643ffc1e94559ffd27b2;hp=f2eebd07b9fd7115453a0e38c0ffaf811ede1577;hpb=9d5e108738768e57f6d445fbdf433b94afc419f2;p=platal.git diff --git a/upgrade/inc/pervasive.sh b/upgrade/inc/pervasive.sh index f2eebd0..d0a1992 100755 --- a/upgrade/inc/pervasive.sh +++ b/upgrade/inc/pervasive.sh @@ -5,7 +5,7 @@ MYSQL='mysql -u admin ' set -e -if [ "$UID" != 0 ]; then +if [ "$UID" != 0 ] && [ "$1" != "-u" ] ; then echo "has to be run as root" exit 1 fi @@ -13,8 +13,8 @@ fi if [[ -n "${DBPREFIX}" ]]; then echo "Using non-default database ${DBPREFIX}x4dat." fi -if [[ -n "${DATABASE}" ]]; then - declare -r DATABASE="${DBPREFIX}x4dat" +if [[ -z "${DATABASE}" ]]; then + DATABASE="${DBPREFIX}x4dat" fi function die() { @@ -22,21 +22,104 @@ function die() { exit 1 } +function confirm() { + if [[ -n "${NO_CONFIRM}" ]]; then + echo "$1" + echo "* press ^C to cancel, waiting 5 seconds..." + sleep 5 + else + echo "$1" + echo "* press ^D to start import (^C to cancel)" + cat + fi +} + +function mysql_pipe() { + sed -e "s/#\([0-9a-z]*\)#/${DBPREFIX}\1/g" | $MYSQL $DATABASE +} + +function mysql_exec() { + echo -n " * executing $1 " + if [[ -z "${DRY_RUN}" ]]; then + (echo "$1" | mysql_pipe) || die "ERROR" + fi + echo "OK" +} + +function mysql_pipe_nodb() { + sed -e "s/#\([0-9a-z]*\)#/${DBPREFIX}\1/g" | $MYSQL +} + +function mysql_exec_nodb() { + echo -n " * executing $1 " + if [[ -z "${DRY_RUN}" ]]; then + (echo "$1" | mysql_pipe_nodb) || die "ERROR" + fi + echo "OK" +} + +function mysql_run() { + echo -n " * running $1 " + if [[ -z "${DRY_RUN}" ]]; then + (cat "$1" | mysql_pipe) || die "ERROR" + fi + echo "OK" +} + +function create_db() { + echo "* create database " + mysql_exec_nodb "CREATE DATABASE IF NOT EXISTS $DATABASE;" + mysql_exec_nodb "GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, EXECUTE, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE ON $DATABASE.* TO 'web'@'localhost';" + mysql_exec_nodb "FLUSH PRIVILEGES;" + echo "OK" +} + +function copy_db() { + if [[ -n "$SOURCE_DATABASE" ]]; then + confirm "* copying database from $SOURCE_DATABASE to $DATABASE" + create_db + echo -n "* build database from dump " + ( mysqldump --add-drop-table -Q $SOURCE_DATABASE | $MYSQL $DATABASE ) \ + || die "ERROR" + echo "OK" + fi +} + +function mysql_run_directory() { + for sql in $1/*.sql ; do + mysql_run $sql + done +} + +function script_run() { + echo -n " * running $1 " + if [[ -z "${DRY_RUN}" ]]; then + $1 || die "ERROR" + fi + echo "OK" +} + function mailman_stop() { - echo -n "stops mailman" - /etc/init.d/mailman stop &>/dev/null + echo -n " * stops mailman" + if [[ -z "${DRY_RUN}" ]]; then + /etc/init.d/mailman stop &>/dev/null + fi echo . } function mailman_templates() { - echo -n "copies new mails templates" - mkdir -p /etc/mailman/xorg - cp -f ../../modules/lists/mail_templates/*.txt /etc/mailman/xorg + echo -n " * copies new mails templates" + if [[ -z "${DRY_RUN}" ]]; then + mkdir -p /etc/mailman/xorg + cp -f ../../modules/lists/mail_templates/*.txt /etc/mailman/xorg + fi echo . } function mailman_start() { - echo -n "starts mailman" - /etc/init.d/mailman start &>/dev/null + echo -n " * starts mailman" + if [[ -z "${DRY_RUN}" ]]; then + /etc/init.d/mailman start &>/dev/null + fi echo . }