#!/bin/bash

BUILD_PATH=`pwd`

USER_NAME='ubuntu'
SERVER_IP='ec2-35-160-195-99.us-west-2.compute.amazonaws.com'
KEY_PATH="/home/ubuntu/.keys"
SERVER_FLEET_NAME="Development"
DEST_PATH="/home/ubuntu/"$SERVER_FLEET_NAME"Website$BUILD_NUMBER"

RSYNC_KEY_DEST=$USER_NAME@$SERVER_IP:$KEY_PATH
RSYNC_DEST=$USER_NAME@$SERVER_IP:$DEST_PATH

# Local key files.
JENKINS_LOCAL_KEY_PATH='/home/ubuntu/.keys'
JENKINS_ACCOUNTS_PEM="$JENKINS_LOCAL_KEY_PATH/$SERVER_FLEET_NAME/$SERVER_FLEET_NAME.pem"
SSH_COMMAND="ssh -i $JENKINS_ACCOUNTS_PEM -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"

# Make the new app destination
$SSH_COMMAND $USER_NAME@$SERVER_IP "mkdir -p $DEST_PATH"

# Make the key path
$SSH_COMMAND $USER_NAME@$SERVER_IP "mkdir -p $KEY_PATH"

# Copy config files from local jenkins to server
ENV_FILE="/home/ubuntu/.keys/$SERVER_FLEET_NAME/"$SERVER_FLEET_NAME"Dashboard.env"
ACCESS_TOKEN_PUBLIC_KEY="/home/ubuntu/.keys/$SERVER_FLEET_NAME/"$SERVER_FLEET_NAME"AccessToken.key.pub"

rsync -avz -e "$SSH_COMMAND" --progress $ENV_FILE $RSYNC_DEST/.env
rsync -avz -e "$SSH_COMMAND" --progress $ACCESS_TOKEN_PUBLIC_KEY "$RSYNC_KEY_DEST/"$SERVER_FLEET_NAME"AccessToken.key.pub"

rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/src $RSYNC_DEST/
rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/views $RSYNC_DEST/
rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/app.js $RSYNC_DEST/
rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/.babelrc $RSYNC_DEST/
rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/package.json $RSYNC_DEST/
rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/semantic.json $RSYNC_DEST/
rsync -avz -e "$SSH_COMMAND" --progress $BUILD_PATH/public $RSYNC_DEST/

$SSH_COMMAND $USER_NAME@$SERVER_IP "cd $DEST_PATH && npm install"
$SSH_COMMAND $USER_NAME@$SERVER_IP "cd $DEST_PATH && pm2 stop app && pm2 delete app"
$SSH_COMMAND $USER_NAME@$SERVER_IP "cd $DEST_PATH && pm2 start ecosystem.config.js --env production --update-env"
$SSH_COMMAND $USER_NAME@$SERVER_IP "cd $DEST_PATH && pm2 link e5fvqnpr8zq7lpm 5suget3t92ds3do "$SERVER_FLEET_NAME"Website$BUILD_NUMBER"
$SSH_COMMAND $USER_NAME@$SERVER_IP "cd $DEST_PATH && pm2 cleardump && pm2 save"