Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | #!/usr/bin/env bash |
2 | ||
3 | CALLEDPATH=`dirname $0` | |
4 | ||
5 | # Convert to an absolute path if necessary | |
6 | case "$CALLEDPATH" in | |
7 | .*) | |
8 | CALLEDPATH="$PWD/$CALLEDPATH" | |
9 | ;; | |
10 | esac | |
11 | ||
ea16a823 TO |
12 | if [ ! -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 | |
16 | fi | |
17 | ||
6a488035 TO |
18 | source "$CALLEDPATH/setup.conf" |
19 | ||
20 | if [ "$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 | |
23 | fi | |
24 | ||
25 | ||
26 | # fetch command line arguments if available | |
27 | if [ ! -z $1 ] ; then SCHEMA=$1; fi | |
28 | if [ ! -z $2 ] ; then DBLOAD=$2; fi | |
29 | if [ ! -z $3 ] ; then DBNAME=$3; fi | |
30 | if [ ! -z $4 ] ; then DBUSER=$4; fi | |
31 | if [ ! -z $5 ] ; then DBPASS=$5; fi | |
32 | ||
33 | # verify if we have at least DBNAME given | |
34 | if [ -z $DBNAME ] ; then | |
35 | echo "No database name defined!" | |
36 | exit 1 | |
37 | fi | |
38 | if [ -z $DBUSER ] ; then | |
39 | echo "No database username defined!" | |
40 | exit 1 | |
41 | fi | |
42 | if [ -z $DBPASS ] ; then | |
43 | read -p "Database password:" | |
44 | DBPASS=$REPLY | |
45 | fi | |
46 | ||
47 | # run code generator if it's there - which means it's | |
48 | # checkout, not packaged code | |
49 | if [ -d $CALLEDPATH/../xml ]; then | |
50 | cd $CALLEDPATH/../xml | |
51 | "$PHP5PATH"php GenCode.php $SCHEMA | |
52 | fi | |
53 | ||
54 | # someone might want to use empty password for development, | |
55 | # let's make it possible - we asked before. | |
56 | if [ -z $DBPASS ]; then # password still empty | |
57 | PASSWDSECTION="" | |
58 | else | |
59 | PASSWDSECTION="-p$DBPASS" | |
60 | fi | |
61 | ||
62 | cd $CALLEDPATH/../sql | |
63 | echo; echo "Dropping civicrm_* tables from database $DBNAME" | |
64 | # mysqladmin -f -u $DBUSER $PASSWDSECTION $DBARGS drop $DBNAME | |
65 | MYSQLCMD="mysql -u$DBUSER $PASSWDSECTION $DBARGS $DBNAME" | |
66 | echo "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 | |
71 | echo "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 | ||
78 | echo; echo Creating database structure | |
79 | mysql -u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < civicrm.mysql | |
80 | ||
81 | # load civicrm_generated.mysql sample data unless special DBLOAD is passed | |
82 | if [ -z $DBLOAD ]; then | |
83 | echo; echo Populating database with example data - civicrm_generated.mysql | |
84 | mysql -u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < civicrm_generated.mysql | |
85 | else | |
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 | |
90 | fi | |
91 | ||
92 | # load additional script if DBADD defined | |
93 | if [ ! -z $DBADD ]; then | |
94 | echo; echo Loading $DBADD | |
95 | mysql -u $DBUSER $PASSWDSECTION $DBARGS $DBNAME < $DBADD | |
96 | fi | |
97 | ||
98 | # run the cli script to build the menu and the triggers | |
99 | cd $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 | |
104 | mysql -u$DBUSER $PASSWDSECTION $DBARGS $DBNAME -e "UPDATE civicrm_domain SET config_backend = NULL; UPDATE civicrm_setting SET value = NULL WHERE name = 'userFrameworkResourceURL';" | |
105 | ||
106 | echo; echo "Setup Complete. Logout from your CMS to avoid session conflicts." | |
107 |