admin/emails/broken: Sort lines of the produced CSV
[platal.git] / upgrade / inc / pervasive.sh
1 #!/bin/bash
2
3 MYSQL='mysql -u admin --default-character-set=utf8 '
4
5
6 set -e
7
8 if [ "$UID" != 0 ] && [ "$1" != "-u" ] ; then
9 echo "has to be run as root"
10 exit 1
11 fi
12
13 if [[ -n "${DBPREFIX}" ]]; then
14 echo "Using non-default database ${DBPREFIX}x4dat."
15 fi
16 if [[ -z "${DATABASE}" ]]; then
17 DATABASE="${DBPREFIX}x4dat"
18 fi
19
20 function die() {
21 echo $1
22 exit 1
23 }
24
25 function confirm() {
26 if [[ -n "${NO_CONFIRM}" ]]; then
27 echo "$1"
28 echo "* press ^C to cancel, waiting 5 seconds..."
29 sleep 5
30 else
31 echo "$1"
32 echo "* press ^D to start import (^C to cancel)"
33 cat
34 fi
35 }
36
37 function mysql_pipe() {
38 sed -e "s/#\([0-9a-z]*\)#/${DBPREFIX}\1/g" | $MYSQL $DATABASE
39 }
40
41 function mysql_exec() {
42 echo -n " * executing $1 "
43 if [[ -z "${DRY_RUN}" ]]; then
44 (echo "$1" | mysql_pipe) || die "ERROR"
45 fi
46 echo "OK"
47 }
48
49 function mysql_pipe_nodb() {
50 sed -e "s/#\([0-9a-z]*\)#/${DBPREFIX}\1/g" | $MYSQL
51 }
52
53 function mysql_exec_nodb() {
54 echo -n " * executing $1 "
55 if [[ -z "${DRY_RUN}" ]]; then
56 (echo "$1" | mysql_pipe_nodb) || die "ERROR"
57 fi
58 echo "OK"
59 }
60
61 function mysql_run() {
62 echo -n " * running $1 "
63 if [[ -z "${DRY_RUN}" ]]; then
64 (cat "$1" | mysql_pipe) || die "ERROR"
65 fi
66 echo "OK"
67 }
68
69 function create_db() {
70 echo "* create database "
71 mysql_exec_nodb "CREATE DATABASE IF NOT EXISTS $DATABASE;"
72 mysql_exec_nodb "GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, EXECUTE, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE ON $DATABASE.* TO 'web'@'localhost';"
73 mysql_exec_nodb "FLUSH PRIVILEGES;"
74 echo "OK"
75 }
76
77 function copy_db() {
78 if [[ -n "$SOURCE_DATABASE" ]]; then
79 confirm "* copying database from $SOURCE_DATABASE to $DATABASE"
80 create_db
81 echo -n "* build database from dump "
82 ( mysqldump --add-drop-table -Q $SOURCE_DATABASE | $MYSQL $DATABASE ) \
83 || die "ERROR"
84 echo "OK"
85 fi
86 }
87
88 function mysql_run_directory() {
89 for sql in $1/*.sql ; do
90 mysql_run $sql
91 done
92 }
93
94 function script_run() {
95 echo -n " * running $1 "
96 if [[ -z "${DRY_RUN}" ]]; then
97 $1 || die "ERROR"
98 fi
99 echo "OK"
100 }
101
102 function mailman_stop() {
103 echo -n " * stops mailman"
104 if [[ -z "${DRY_RUN}" ]]; then
105 /etc/init.d/mailman stop &>/dev/null
106 fi
107 echo .
108 }
109
110 function mailman_templates() {
111 echo -n " * copies new mails templates"
112 if [[ -z "${DRY_RUN}" ]]; then
113 mkdir -p /etc/mailman/xorg
114 cp -f ../../modules/lists/mail_templates/*.txt /etc/mailman/xorg
115 fi
116 echo .
117 }
118
119 function mailman_start() {
120 echo -n " * starts mailman"
121 if [[ -z "${DRY_RUN}" ]]; then
122 /etc/init.d/mailman start &>/dev/null
123 fi
124 echo .
125 }