#!/bin/sh

#------------------------------------------------------------------------------#
# NOTE -  il virtualhost di staging deve essere già creato
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# PARAMETRI
#------------------------------------------------------------------------------#

# 1 - dominio di origine (es. groweb.it)
# 2 - nome del database di origine
# 3 - dominio di staging (es. staging.groweb.it)
# 4 - nome del database di staging
# 5 - nome utente del database di staging
# 6 - password del database di staging

URL=$1
DBNAME=$2

STAGEURL=$3
STAGEDBNAME=$4
STAGEDBUSER=$5
STAGEDBPASS=$6



#------------------------------------------------------------------------------#
# preparazione variabili in base ai parametri e alla configurazione
#------------------------------------------------------------------------------#

TMPID=$(date +%s%N)
CNF=/tmp/my$TMPID.cnf

MYSQL=/usr/local/mysql/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
PHP=/usr/bin/php72

echo "[client]" > $CNF
echo "password=f0EMDe2dw2sdLCBlq9A9pC3fAB9CQ3iiZSQ58Z5XZ59ZBHp9l2x0SejA801ZLe8V" >> $CNF
echo "[client]" > $CNF.stg
echo "password=$STAGEDBPASS" >> $CNF.stg



#------------------------------------------------------------------------------#
# 1 - sincronia della cartella
#------------------------------------------------------------------------------#

/usr/bin/rsync -avhzx --exclude="synccdn" --delete-excluded --delete /work/www/$URL/ /work/www/$STAGEURL/



#------------------------------------------------------------------------------#
# 2 - dump del database di origine in quello di staging
#------------------------------------------------------------------------------#

$MYSQL --defaults-extra-file=$CNF -h 127.0.0.1 -u backup -e "DROP SCHEMA $STAGEDBNAME; CREATE SCHEMA $STAGEDBNAME;"
$MYSQLDUMP --defaults-extra-file=$CNF -h 127.0.0.1 -u backup $DBNAME | $MYSQL --defaults-extra-file=$CNF -h 127.0.0.1 -u backup $STAGEDBNAME



#------------------------------------------------------------------------------#
# 3 - operazioni specifiche di Magento
#------------------------------------------------------------------------------#

$PHP /work/www/$STAGEURL/bin/magento setup:config:set --db-name="$STAGEDBNAME" --db-user="$STAGEDBUSER" --db-password="$STAGEDBPASS" -n
$PHP /work/www/$STAGEURL/bin/magento setup:store-config:set --base-url="http://$STAGEURL/"
$PHP /work/www/$STAGEURL/bin/magento setup:store-config:set --base-url-secure="https://$STAGEURL/"
$PHP /work/www/$STAGEURL/bin/magento setup:store-config:set --base-link-url="https://$STAGEURL/"

$MYSQL --defaults-extra-file=$CNF.stg -h 127.0.0.1 -u $STAGEDBUSER -B $STAGEDBNAME -e "UPDATE core_config_data SET value='http://$STAGEURL/' WHERE path='web/unsecure/base_link_url';"
$MYSQL --defaults-extra-file=$CNF.stg -h 127.0.0.1 -u $STAGEDBUSER -B $STAGEDBNAME -e "UPDATE core_config_data SET value='https://$STAGEURL/' WHERE path='web/secure/base_link_url';"

# lascio le stesse impostazioni "secure" del dominio originale, ma volendo sarebbero sovrascrivibili
#$PHP /work/www/$STAGEURL/bin/magento setup:store-config:set --use-secure=1 --use-secure-admin=1

$PHP /work/www/$STAGEURL/bin/magento cache:clean
$PHP /work/www/$STAGEURL/bin/magento cache:flush
$PHP /work/www/$STAGEURL/bin/magento indexer:reindex

$PHP -d memory_limit=1G /work/www/$STAGEURL/bin/magento setup:upgrade
$PHP -d memory_limit=1G /work/www/$STAGEURL/bin/magento setup:di:compile
$PHP -d memory_limit=1G /work/www/$STAGEURL/bin/magento setup:static-content:deploy it_IT -f
$PHP -d memory_limit=1G /work/www/$STAGEURL/bin/magento setup:static-content:deploy en_US -f

$PHP /work/www/$STAGEURL/bin/magento cache:clean
$PHP /work/www/$STAGEURL/bin/magento cache:flush
$PHP /work/www/$STAGEURL/bin/magento indexer:reindex

chown -R apache:apache /work/www/$STAGEURL



#------------------------------------------------------------------------------#

rm $CNF
rm $CNF.stg



#------------------------------------------------------------------------------#
# sblocco il dominio
#------------------------------------------------------------------------------#

/work/scripts/cancelTask $URL
