#!/bin/bash -eu
update=true
if [[ $# -gt 0 ]]; then
    if [[ $1 != "--update" ]]; then
        echo "Invalid parameter! Use:"
        echo "./create_sys_image"
        exit 1
    fi
fi

if [[ $(basename $(pwd)) == "bin" ]]; then
    cd ..
fi
export MPLBACKEND=qt5agg

julia_version=$(julia --version | awk '{print($3)}')
julia_major=${julia_version:0:3}
if [[ $julia_major == "1.1" ]]; then
    julia_major=${julia_version:0:4} 
fi
# export "PYTHON"=""

if test -f "kps-image-${julia_major}.so"; then
    mv bin/kps-image-${julia_major}.so bin/kps-image-${julia_major}.so.bak
fi

echo "Updating packages..."
if test -f "Manifest.toml"; then
   mv Manifest.toml Manifest.toml.bak
fi
julia --project -e "include(\"./test/update_packages.jl\");"
# julia -e "using Pkg; Pkg.add(\"TestEnv\")"
# julia --project -e "using Pkg; using TestEnv; TestEnv.activate(); Pkg.add(\"PyCall\"); Pkg.build(\"PyCall\")"

echo "--> 1"
julia --project -e "using Pkg; Pkg.precompile()"
echo "--> 2"
julia --project -e "include(\"./test/create_sys_image.jl\");"
mv kps-image_tmp.so bin/kps-image-${julia_major}.so
echo "--> 3"
julia --project -e "using Pkg; try; Pkg.precompile(); catch; println(\"Warning...\"); end"
echo "--> 4"
julia --project -J bin/kps-image-${julia_major}.so -e "using ControlPlots, NativeFileDialog"
echo "--> 5"
julia --project -J bin/kps-image-${julia_major}.so -e "try; using Plots; catch; println(\"Warning when precompiling Plots...\"); end"
echo "Successfully created system image!"