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