4 CALLEDPATH
=`dirname $0`
6 # Convert to an absolute path if necessary
9 CALLEDPATH
="$PWD/$CALLEDPATH"
13 if [ ! -f "$CALLEDPATH/setup.conf" ]; then
15 echo "Missing configuration file. Please copy $CALLEDPATH/setup.conf.txt to $CALLEDPATH/setup.conf and edit it."
19 source "$CALLEDPATH/setup.conf"
20 source "$CALLEDPATH/setup.lib.sh"
22 if [ "$1" = '-h' ] ||
[ "$1" = '--help' ]; then
24 echo "Usage: setup.sh [options] [schema file] [database data file] [database name] [database user] [database password] [database host] [database port] [additional args]"
25 echo "[options] is a mix of zero or more of following:"
26 echo " -a (All) Implies -Dgsef (default)"
27 echo " -D (Download) Download dependencies"
28 echo " -g (GenCode) Generate DAO files, SQL files, etc"
29 echo " -s (Schema) Load new schema in DB"
30 echo " -d (Data-Plain) Load basic dataset in DB"
31 echo " -e (Data-Examples) Load example dataset in DB"
32 echo " -f (Flush) Flush caches and settings"
34 echo "Example: Perform a full setup"
37 echo "Example: Setup all the code but leave the DB alone"
40 echo "Example: Keep the existing code but reset the DB"
45 ###############################################################################
46 ## Parse command line options
56 while getopts "aDgsdef" opt
; do
80 DEFAULT_DATA
=civicrm_data.mysql
85 DEFAULT_DATA
=civicrm_generated.mysql
93 echo "Invalid option: -$OPTARG" >&2
97 echo "Option -$OPTARG requires an argument." >&2
102 if [ -z "$FOUND_ACTION" ]; then
108 DEFAULT_DATA
=civicrm_generated.mysql
113 # fetch command line arguments if available
114 if [ ! -z "$1" ] ; then SCHEMA
="$1"; fi
115 if [ ! -z "$2" ] ; then DBLOAD
="$2"; fi
116 if [ ! -z "$3" ] ; then DBNAME
="$3"; fi
117 if [ ! -z "$4" ] ; then DBUSER
="$4"; fi
118 if [ ! -z "$5" ] ; then DBPASS
="$5"; fi
119 if [ ! -z "$6" ] ; then DBHOST
="$6"; fi
120 if [ ! -z "$7" ] ; then DBPORT
="$7"; fi
122 # verify if we have at least DBNAME given
123 if [ -z $DBNAME ] ; then
124 echo "No database name defined!"
127 if [ -z $DBUSER ] ; then
128 echo "No database username defined!"
131 if [ -z $DBPASS ] ; then
132 read -p "Database password:"
136 MYSQLCMD
=$
(mysql_cmd
)
137 ###############################################################################
141 if [ -n "$DO_DOWNLOAD" ]; then
142 pushd "$CALLEDPATH/.."
143 COMPOSER
=$
(pickcmd composer composer.phar
)
146 if has_commands bower karma
; then
147 ## dev dependencies have been installed globally; don't force developer to redownload
148 npm
install --production
153 BOWER
=$
(pickcmd node_modules
/bower
/bin
/bower bower
)
154 # Without the force flag bower won't check for new versions or verify that installed software matches version specified in bower.json
159 # run code generator if it's there - which means it's
160 # checkout, not packaged code
161 if [ -n "$DO_GENCODE" -a -d "$CALLEDPATH/../xml" ]; then
162 pushd "$CALLEDPATH/../xml"
163 if [ -z "$DBPORT" ]; then
164 PHP_MYSQL_HOSTPORT
="$DBHOST"
166 PHP_MYSQL_HOSTPORT
="$DBHOST:$DBPORT"
168 "$PHP5PATH"php
-d mysql.default_host
="$PHP_MYSQL_HOSTPORT" -d mysql.default_user
=$DBUSER -d mysql.default_password
=$DBPASS GenCode.php
$SCHEMA '' ${GENCODE_CMS}
172 if [ -n "$DO_SCHEMA" ]; then
173 pushd "$CALLEDPATH/../sql"
174 echo; echo "Dropping civicrm_* tables from database $DBNAME"
175 echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'VIEW'" \
177 |
grep '^\(civicrm_\|log_civicrm_\)' \
178 |
awk -v NOFOREIGNCHECK
='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop view " $1 ";"}' \
180 echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DBNAME}' AND TABLE_TYPE = 'BASE TABLE'" \
182 |
grep '^\(civicrm_\|log_civicrm_\)' \
183 |
awk -v NOFOREIGNCHECK
='SET FOREIGN_KEY_CHECKS=0;' 'BEGIN {print NOFOREIGNCHECK}{print "drop table " $1 ";"}' \
186 echo; echo Creating database structure
187 $MYSQLCMD < civicrm.mysql
191 if [ -n "$DO_DATA" ]; then
192 pushd "$CALLEDPATH/../sql"
193 # load default data set unless system is configured with override
194 if [ -z $DBLOAD ]; then
196 echo "Populating database with dataset - $DEFAULT_DATA"
197 $MYSQLCMD < "$DEFAULT_DATA"
199 echo; echo Populating database with required data
- civicrm_data.mysql
200 $MYSQLCMD < civicrm_data.mysql
201 echo; echo Populating database with
$DBLOAD data
205 # load additional script if DBADD defined
206 if [ ! -z $DBADD ]; then
207 echo; echo Loading
$DBADD
213 if [ -n "$DO_FLUSH" ]; then
214 pushd "$CALLEDPATH/.."
215 # run the cli script to build the menu and the triggers
216 "$PHP5PATH"php bin
/cli.php
-e System
-a flush
--triggers 1 --session 1
218 # reset config_backend and userFrameworkResourceURL which gets set
219 # when config object is initialized
220 $MYSQLCMD -e "UPDATE civicrm_domain SET config_backend = NULL; UPDATE civicrm_setting SET value = NULL WHERE name = 'userFrameworkResourceURL';"
224 echo; echo "NOTE: Logout from your CMS to avoid session conflicts."