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