Merge remote-tracking branch 'upstream/4.4' into 4.4-master-2014-02-25-17-38-49
[civicrm-core.git] / bin / setup.sh
CommitLineData
6a488035 1#!/usr/bin/env bash
5e43f8f4 2set -e
6a488035
TO
3
4CALLEDPATH=`dirname $0`
5
6# Convert to an absolute path if necessary
7case "$CALLEDPATH" in
8 .*)
9 CALLEDPATH="$PWD/$CALLEDPATH"
10 ;;
11esac
12
ea16a823
TO
13if [ ! -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
17fi
18
6a488035
TO
19source "$CALLEDPATH/setup.conf"
20
21if [ "$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
24fi
25
26
27# fetch command line arguments if available
5e43f8f4
TO
28if [ ! -z "$1" ] ; then SCHEMA="$1"; fi
29if [ ! -z "$2" ] ; then DBLOAD="$2"; fi
30if [ ! -z "$3" ] ; then DBNAME="$3"; fi
31if [ ! -z "$4" ] ; then DBUSER="$4"; fi
32if [ ! -z "$5" ] ; then DBPASS="$5"; fi
5296128c
PH
33if [ ! -z "$6" ] ; then DBHOST="$6"; fi
34if [ ! -z "$7" ] ; then DBPORT="$7"; fi
6a488035
TO
35
36# verify if we have at least DBNAME given
37if [ -z $DBNAME ] ; then
38 echo "No database name defined!"
39 exit 1
40fi
41if [ -z $DBUSER ] ; then
42 echo "No database username defined!"
43 exit 1
44fi
45if [ -z $DBPASS ] ; then
46 read -p "Database password:"
47 DBPASS=$REPLY
48fi
49
50# run code generator if it's there - which means it's
51# checkout, not packaged code
5e43f8f4
TO
52if [ -d "$CALLEDPATH/../xml" ]; then
53 cd "$CALLEDPATH/../xml"
c0956f19 54 "$PHP5PATH"php GenCode.php $SCHEMA '' $GENCODE_CMS
6a488035
TO
55fi
56
57# someone might want to use empty password for development,
58# let's make it possible - we asked before.
59if [ -z $DBPASS ]; then # password still empty
60 PASSWDSECTION=""
61else
62 PASSWDSECTION="-p$DBPASS"
63fi
64
5296128c
PH
65HOSTSECTTION=""
66if [ ! -z "$DBHOST" ]; then
67 HOSTSECTION="-h $DBHOST"
68fi
69
70PORTSECTION=""
71if [ ! -z "$DBPORT" ]; then
72 PORTSECTION="-P $DBPORT"
73fi
74
5e43f8f4 75cd "$CALLEDPATH/../sql"
6a488035
TO
76echo; echo "Dropping civicrm_* tables from database $DBNAME"
77# mysqladmin -f -u $DBUSER $PASSWDSECTION $DBARGS drop $DBNAME
5296128c 78MYSQLCMD="mysql -u$DBUSER $PASSWDSECTION $HOSTSECTION $PORTSECTION $DBARGS $DBNAME"
6a488035
TO
79echo "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
84echo "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
91echo; echo Creating database structure
5296128c 92$MYSQLCMD < civicrm.mysql
6a488035
TO
93
94# load civicrm_generated.mysql sample data unless special DBLOAD is passed
95if [ -z $DBLOAD ]; then
96 echo; echo Populating database with example data - civicrm_generated.mysql
5296128c 97 $MYSQLCMD < civicrm_generated.mysql
6a488035
TO
98else
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
103fi
104
105# load additional script if DBADD defined
106if [ ! -z $DBADD ]; then
107 echo; echo Loading $DBADD
5296128c 108 $MYSQLCMD < $DBADD
6a488035
TO
109fi
110
111# run the cli script to build the menu and the triggers
863efcd6 112cd "$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
119echo; echo "Setup Complete. Logout from your CMS to avoid session conflicts."
120