#!/bin/bash
# exit when any command fails
set -e
# keep track of the last executed command
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
# echo an error message before exiting
trap 'echo "\"${last_command}\" command filed with exit code $?."' EXIT

BRANCH=$1
ARCH=$2
ARTIFACTORY_USER=$3
ARTIFACTORY_PASS=$4
ARTIFACTORY_URL=$5
JETPACK_VERSION=$6
PA_PLUGIN_NAME=phantom-plugin_"$ARCH".tar.gz
PA_WEBVIEW_NAME=webview_"$ARCH".tar.gz
PA_PLUGIN_NAME_ARM=phantom-plugin_"$ARCH"_"$JETPACK_VERSION".tar.gz
PA_WEBVIEW_NAME_ARM=webview_"$ARCH"_"$JETPACK_VERSION".tar.gz


export cargo_build_path="${PWD}/target/release"

#build cargo projects
build_project () {

export RUSTFLAGS="-Clink-arg=-Wl,--enable-new-dtags,-rpath=."

#if build is amd do
if [ "$ARCH" == "amd64" ]
then
  pushd phantom-plugin
  cargo build -p phantom-plugin --release --target-dir $PWD/target
  popd;
  pushd webview
  cargo build -p webview --release --target-dir $PWD/target
  popd;
#if build is arm do
else
  pushd phantom-plugin
  cargo build -p phantom-plugin --release --target-dir $PWD/target
  popd;
fi
echo "Done with building, lets pack and ship now!"
}
#pack all builds for target dir and upload
pack_project () {
if [ "$ARCH" == "amd64" ]
then
  pushd phantom-plugin
  cp $PWD/../barcode-reader-sys/thirdparty/DynamSoft/lib/amd64/libDynamsoftBarcodeReader.so $PWD/target/release/libDynamsoftBarcodeReader.so
  tar -czf $PA_PLUGIN_NAME $PWD/target/release/libphantom_plugin.so $PWD/target/release/libDynamsoftBarcodeReader.so
  popd;
  pushd webview
  tar -czf $PA_WEBVIEW_NAME $PWD/target/release/locales/ $PWD/target/release/cef_child_process $PWD/target/release/chrome_100_percent.pak $PWD/target/release/chrome_200_percent.pak $PWD/target/release/icudtl.dat $PWD/target/release/libcef.so $PWD/target/release/libEGL.so $PWD/target/release/libGLESv2.so $PWD/target/release/resources.pak $PWD/target/release/snapshot_blob.bin $PWD/target/release/v8_context_snapshot.bin $PWD/target/release/vk_swiftshader_icd.json $PWD/target/release/libcef.so $PWD/target/release/libvk_swiftshader.so $PWD/target/release/libwebview.so $PWD/target/release/libvulkan.so.1  && \
  popd;
else
  pushd phantom-plugin
  cp $PWD/../barcode-reader-sys/thirdparty/DynamSoft/lib/aarch64/libDynamsoftBarcodeReader.so $PWD/target/release/libDynamsoftBarcodeReader.so
  tar -czf $PA_PLUGIN_NAME_ARM $PWD/target/release/libphantom_plugin.so $PWD/target/release/libDynamsoftBarcodeReader.so
  popd;

fi
echo "Packing part one is done"

if [ "$ARCH" == "amd64" ]
then
  pushd phantom-plugin 
  jfrog rt u --detailed-summary $PA_PLUGIN_NAME Phantom.Binary/Phantom.Oden.Integration/$BRANCH/$ARCH/$PA_PLUGIN_NAME  && \
  aws s3 cp $PA_PLUGIN_NAME s3://phau-artifactory-eng2/Phantom.Binary/Phantom.Oden.Integration/$BRANCH/$ARCH/
  popd;
  pushd webview
  jfrog rt u --detailed-summary $PA_WEBVIEW_NAME Phantom.Binary/Phantom.Oden.Integration/$BRANCH/$ARCH/$PA_WEBVIEW_NAME  && \
  aws s3 cp $PA_WEBVIEW_NAME s3://phau-artifactory-eng2/Phantom.Binary/Phantom.Oden.Integration/$BRANCH/$ARCH/ && \
  popd;
else
  pushd phantom-plugin 
  jfrog rt u --detailed-summary $PA_PLUGIN_NAME_ARM Phantom.Binary/Phantom.Oden.Integration/$BRANCH/$ARCH/$PA_PLUGIN_NAME_ARM  && \
  aws s3 cp $PA_PLUGIN_NAME_ARM s3://phau-artifactory-eng2/Phantom.Binary/Phantom.Oden.Integration/$BRANCH/$ARCH/
  popd;
fi
echo "Packing is done, ready for shipment sir"
}

# #Install deps for cargo build
# install_deps () {
# #if Build arch is AMD do
# if [ "$ARCH" == "amd64" ]
# then
#   apt install -y wget curl libasound2-dev zip glib-2.0 gmodule-2.0 gtk+-3.0 libglib2.0-dev libxi-dev \
#   libgtk-3-dev libssl-dev clang lldb pkg-config libclang-dev libglib2.0-dev libxi-dev \
#   libgtk-3-dev build-essential libgtk-3-dev lsb-release && cd /usr/local/bin && curl -fL https://getcli.jfrog.io | sh && jfrog c add --artifactory-url $ARTIFACTORY_URL --user $ARTIFACTORY_USER --password=$ARTIFACTORY_PASS --interactive=false && apt upgrade -y && apt autoremove -y && apt-get clean all

# #If build arch is ARM do
# else
#   apt install -y wget curl zip libnss3-dev libasound2 libglib2.0-dev libxi-dev \
#   libgtk-3-dev libssl-dev clang lldb pkg-config libclang-dev libglib2.0-dev libxi-dev \
#   libgtk-3-dev build-essential libgtk-3-dev && cd /usr/local/bin && curl -fL https://getcli.jfrog.io | sh && jfrog c add --artifactory-url $ARTIFACTORY_URL --user $ARTIFACTORY_USER --password=$ARTIFACTORY_PASS --interactive=false && apt upgrade -y && apt autoremove -y && apt clean
# fi
# #check if cargo installed - if not it willl install it
# if [ -x "$(command -v cargo)" ]; then echo "cargo is already installed"; else curl https://sh.rustup.rs -sSf | sh -s -- -y && export PATH="$HOME/.cargo/bin:$PATH"; fi
# if [ -x "$(command -v cmake)" ]; then echo "cmake is already installed"; else wget https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-linux-$(uname -m).sh && cp cmake-3.24.0-rc5-linux-$(uname -m).sh /opt && chmod +x /opt/cmake-3.24.0-rc5-linux-$(uname -m).sh && bash /opt/cmake-3.24.0-rc5-linux-$(uname -m).sh --skip-license --prefix=/opt && export PATH="/opt/bin/:$PATH"; fi
# echo "Deps installed"

# }

# echo "Instaling deps"
# install_deps
echo "Building projects"
cd /
build_project
echo "Packing and uploading project"
jfrog c add --artifactory-url $ARTIFACTORY_URL --user $ARTIFACTORY_USER --password=$ARTIFACTORY_PASS --interactive=false
pack_project
echo "Mommy im done! Can I have my ice-cream now?"
