#!/bin/bash

# for windows
manager_folder="D:\xampp\htdocs\Samanthic\Ticket\support_and_tracking_system_admin"
api_folder="D:\xampp\htdocs\Samanthic\Ticket\support_and_tracking_system"
client_folder="C:/Users/mtaha/Desktop/Semantechs/Projects/SupportandTrackingsystem/support_and_tracking_system_client"


#MAIN SERVER
host="31.172.87.109"
username="learnfirst"
port="22"

# folder where projects are located on the server. Path without trailing slash
upload_to_folder="/home/learnfirst/public_html/support"


# __START

# default server is main
server_user=$username
server_ip=$host
server_port=$port

project=$1

# check for options
i=1
for arg in "$@"
do
    case "$arg" in
        -s)
            server_user=$secondary_user
            server_ip=$secondary_ip
            echo "Updating secondary server: $server_ip"
        ;;
        -p)
            i=$((i+1))
            path="${!i}"
            [ -z $path ] || upload_to_folder="$path"
        ;;
    esac
    i=$((i+1))
done

build_zip="${project}_build.zip"

# ADMIN
if [ "$project" = "admin" ] ; then
    echo "<-- BUILDING $project -->"
    dist_folder="dist"

    cd $manager_folder
    output="$(npm run staging)"
    ["$output" != *"DONE  Build complete."* ] && echo "<-- ERROR WITH BUILD -->" && exit 1

elif [ "$project" = "client" ] ; then
    echo "<-- BUILDING $project -->"
    dist_folder="dist"

    cd $client_folder
    output="$(npm run staging)"
    ["$output" != *"DONE  Build complete."* ] && echo "<-- ERROR WITH BUILD -->" && exit 1

    # BACKEND
elif [ "$project" = "backend" ] ; then
    dist_folder="."
    cd $api_folder;
    exclude_files=".env storage public"

else
    echo "USAGE: ./update.sh backend|admin|client"
    exit 2
fi


echo "<-- SUCCESSFUL BUILD $(date +'%H:%M') -->"

# ZIP
cd $dist_folder
[ -e $build_zip ] && rm -rf $build_zip
files=$(ls)
#remove excluded files
for file in "${exclude_files[@]}";
do
    exclude_params+="--exclude=$file "
done
zip -r $build_zip $files 1> /dev/null &&
echo "<-- SUCCESSFUL ZIP $(date +'%H:%M') -->" || { echo "<-- ERROR WITH ZIP-->" && exit 3 ; }

# SCP

scp -P "$server_port" $build_zip "$server_user"@"$server_ip":$upload_to_folder/$project &&
echo "<-- SUCCESSFUL SCP $(date +'%H:%M') -->" || { echo "<-- ERROR WITH SCP-->" && exit 4; }

ssh -p "$server_port" "$server_user"@"$server_ip" "cd $upload_to_folder/$project ; rm -rf $files ; unzip -o $build_zip ; chmod -R +777 ." 1> /dev/null  &&
{
    echo "<-- SUCCESSFUL UPDATE $project $(date +'%H:%M') -->" || echo "<-- ERROR WITH BUILD $(date +'%H:%M') -->"
}
