#!/usr/bin/env bash

# Onyx Migration Script
# Site ID: 14831
# Site Name: 4Homes Kitchens (staging)
# Domains: None

set -e
set -x

# Exit if running as root
if [ "$EUID" -eq 0 ]
  then echo "Cannot run as root. Run as the user from the directory the site should be created within."
  exit 1
fi

# Check if WP CLI is installed
if ! [ -x "$(command -v wp)" ]; then
  echo 'Error: WP CLI is not installed.' >&2
  exit 1
fi

# Prompt the user to confirm they're happy to continue running the script
# from the directory they are in. Displaying to them what directory they are in.
echo "You are about to run the Onyx Migration Script from the following directory."
echo "This is where the site will be imported."
echo
echo "  $(pwd)"
echo
echo "Sleeping for 10 seconds to let you think about this. CTRL+C to stop."
sleep 10

# Set some variables
ssh_key_path="$HOME/.onyx-migration-key-14831"
remote_port="33404"
remote_ip="185.53.56.90"
remote_user="webuser"
remote_folder="/var/www/html/"
local_folder="./"
database_suffix="wp-14831"
sql_filename="onyx-sql-dump-14831.sql"
database_password=$(openssl rand -hex 12)

# Export a private key which can be used for SSHing to Onyx and set permissions
echo "-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----" > ${ssh_key_path}
chmod 600 ${ssh_key_path}

# Copy folders. Exclude wp-config.php if it already exists
rsync -avz -e "ssh -i ${ssh_key_path} -p ${remote_port} -o StrictHostKeyChecking=no" ${remote_user}@${remote_ip}:${remote_folder} ${local_folder}

# Create database and database user
uapi Mysql create_database name=${USER}_${database_suffix}
uapi Mysql create_user name=${USER}_${database_suffix} password=${database_password}
uapi Mysql set_privileges_on_database user=${USER}_${database_suffix} database=${USER}_${database_suffix} privileges=ALL

# Export database on remote
dump_output=$(ssh -i ${ssh_key_path} -p ${remote_port} ${remote_user}@${remote_ip} "wp db export ${sql_filename} --path=${remote_folder}")

# Copy the remote database
rsync -avz -e "ssh -i ${ssh_key_path} -p ${remote_port}" ${remote_user}@${remote_ip}:${sql_filename} $HOME/

# Import the .sql file
mysql -u ${USER}_${database_suffix} -p${database_password} ${USER}_${database_suffix} < $HOME/${sql_filename}

# Enable Redis
touch $HOME/.redis_request

# Set DB details in wp-config.php
wp config set DB_NAME ${USER}_${database_suffix} --path=${local_folder}
wp config set DB_USER ${USER}_${database_suffix} --path=${local_folder}
wp config set DB_PASSWORD ${database_password} --path=${local_folder}
wp config set DB_HOST localhost --path=${local_folder}

# Disable Cron
wp config set DISABLE_WP_CRON false --path=${local_folder}

# Set Redis details in Litespeed Cache
wp litespeed-option set object-host /var/kredis/${USER}/redis.sock --path=${local_folder}
wp litespeed-option set object-port 0 --path=${local_folder}
wp litespeed-option set object-user "" --path=${local_folder}
wp litespeed-option set object-pswd "" --path=${local_folder}

# Disable CDN
wp litespeed-option set cdn 0 --path=${local_folder}

# Clean DB dumps
rm $HOME/${sql_filename}
ssh -i ${ssh_key_path} -p ${remote_port} ${remote_user}@${remote_ip} "rm -f ${sql_filename}"

# Clean SSH key
rm ${ssh_key_path}
