Commit | Line | Data |
---|---|---|
6a488035 | 1 | #!/usr/bin/env bash |
5e43f8f4 | 2 | set -e |
6a488035 TO |
3 | |
4 | CALLEDPATH=`dirname $0` | |
5 | ||
6 | # Convert to an absolute path if necessary | |
7 | case "$CALLEDPATH" in | |
8 | .*) | |
9 | CALLEDPATH="$PWD/$CALLEDPATH" | |
10 | ;; | |
11 | esac | |
12 | ||
ea16a823 TO |
13 | if [ ! -f "$CALLEDPATH/setup.conf" ]; then |
14 | echo | |
15 | echo "Missing configuration file. Please copy $CALLEDPATH/setup.conf.txt to $CALLEDPATH/setup.conf and edit it." | |
16 | exit 1 | |
17 | fi | |
18 | ||
6a488035 TO |
19 | source "$CALLEDPATH/setup.conf" |
20 | ||
21 | if [ "$1" = '-h' ] || [ "$1" = '--help' ]; then | |
5296128c | 22 | echo; echo Usage: setup.sh [schema file] [database data file] [database name] [database user] [database password] [database host] [database port] [additional args]; echo |
6a488035 TO |
23 | exit 0 |
24 | fi | |
25 | ||
26 | ||
27 | # fetch command line arguments if available | |
5e43f8f4 TO |
28 | if [ ! -z "$1" ] ; then SCHEMA="$1"; fi |
29 | if [ ! -z "$2" ] ; then DBLOAD="$2"; fi | |
30 | if [ ! -z "$3" ] ; then DBNAME="$3"; fi | |
31 | if [ ! -z "$4" ] ; then DBUSER="$4"; fi | |
32 | if [ ! -z "$5" ] ; then DBPASS="$5"; fi | |
5296128c PH |
33 | if [ ! -z "$6" ] ; then DBHOST="$6"; fi |
34 | if [ ! -z "$7" ] ; then DBPORT="$7"; fi | |
6a488035 TO |
35 | |
36 | # verify if we have at least DBNAME given | |
37 | if [ -z $DBNAME ] ; then | |
38 | echo "No database name defined!" | |
39 | exit 1 | |
40 | fi | |
41 | if [ -z $DBUSER ] ; then | |
42 | echo "No database username defined!" | |
43 | exit 1 | |
44 | fi | |
45 | if [ -z $DBPASS ] ; then | |
46 | read -p "Database password:" | |
47 | DBPASS=$REPLY | |
48 | fi | |
49 | ||
50 | # run code generator if it's there - which means it's | |
51 | # checkout, not packaged code | |
5e43f8f4 TO |
52 | if [ -d "$CALLEDPATH/../xml" ]; then |
53 | cd "$CALLEDPATH/../xml" | |
c0956f19 | 54 | "$PHP5PATH"php GenCode.php $SCHEMA '' $GENCODE_CMS |
6a488035 TO |
55 | fi |
56 | ||
57 | # someone might want to use empty password for development, | |
58 | # let's make it possible - we asked before. | |
59 | if [ -z $DBPASS ]; then # password still empty | |
60 | PASSWDSECTION="" | |
61 | else | |
62 | PASSWDSECTION="-p$DBPASS" | |
63 | fi | |
64 | ||
5296128c PH |
65 | HOSTSECTTION="" |
66 | if [ ! -z "$DBHOST" ]; then | |
67 | HOSTSECTION="-h $DBHOST" | |
68 | fi | |
69 | ||
70 | PORTSECTION="" | |
71 | if [ ! -z "$DBPORT" ]; then | |
72 | PORTSECTION="-P $DBPORT" | |
73 | fi | |
74 | ||
5e43f8f4 | 75 | cd "$CALLEDPATH/../sql" |
6a488035 TO |
76 | echo; echo "Dropping civicrm_* tables from database $DBNAME" |
77 | # mysqladmin -f -u $DBUSER $PASSWDSECTION $DBARGS drop $DBNAME | |
5296128c | 78 | MYSQLCMD="mysql -u$DBUSER $PASSWDSECTION $HOSTSECTION $PORTSECTION $DBARGS $DBNAME" |
6a488035 TO |
79 | echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'VIEW'" \ |
80 | | $MYSQLCMD \ | |
81 | | grep '^\(civicrm_\|log_civicrm_\)' \ | |
82 | | awk -v NOFOREIGNCHECK='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop view " $1 ";"}' \ | |
83 | | $MYSQLCMD | |
84 | echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'BASE TABLE'" \ | |
85 | | $MYSQLCMD \ | |
86 | | grep '^\(civicrm_\|log_civicrm_\)' \ | |
87 | | awk -v NOFOREIGNCHECK='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop table " $1 ";"}' \ | |
88 | | $MYSQLCMD | |
89 | ||
90 | ||
91 | echo; echo Creating database structure | |
5296128c | 92 | $MYSQLCMD < civicrm.mysql |
6a488035 TO |
93 | |
94 | # load civicrm_generated.mysql sample data unless special DBLOAD is passed | |
95 | if [ -z $DBLOAD ]; then | |
96 | echo; echo Populating database with example data - civicrm_generated.mysql | |
5296128c | 97 | $MYSQLCMD < civicrm_generated.mysql |
6a488035 TO |
98 | else |
99 | echo; echo Populating database with required data - civicrm_data.mysql | |
5296128c | 100 | $MYSQLCMD < civicrm_data.mysql |
6a488035 | 101 | echo; echo Populating database with $DBLOAD data |
5296128c | 102 | $MYSQLCMD < $DBLOAD |
6a488035 TO |
103 | fi |
104 | ||
105 | # load additional script if DBADD defined | |
106 | if [ ! -z $DBADD ]; then | |
107 | echo; echo Loading $DBADD | |
5296128c | 108 | $MYSQLCMD < $DBADD |
6a488035 TO |
109 | fi |
110 | ||
111 | # run the cli script to build the menu and the triggers | |
863efcd6 | 112 | cd "$CALLEDPATH/.." |
6a488035 TO |
113 | "$PHP5PATH"php bin/cli.php -e System -a flush --triggers 1 --session 1 |
114 | ||
783f84c9 | 115 | # reset config_backend and userFrameworkResourceURL which gets set |
6a488035 | 116 | # when config object is initialized |
5296128c | 117 | $MYSQLCMD -e "UPDATE civicrm_domain SET config_backend = NULL; UPDATE civicrm_setting SET value = NULL WHERE name = 'userFrameworkResourceURL';" |
6a488035 TO |
118 | |
119 | echo; echo "Setup Complete. Logout from your CMS to avoid session conflicts." | |
120 |