#!/usr/bin/env bash

# Onyx Migration Script
# Site ID: 15123
# Site Name: Tamar Valley (staging)
# Domains: None

set -e

# 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
read -p "Are you sure? (y/N) " -r

# Set some variables
ssh_key_path="$HOME/.onyx-migration-key-15123"
remote_port="31085"
remote_ip="185.53.56.90"
remote_user="webuser"
remote_folder="/var/www/html/"
local_folder="./"
database_suffix="wp-15123"
sql_filename="onyx-sql-dump-15123.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} ~/

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

# Enable Redis
touch ~/.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}

# 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 ~/${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}
