#!/bin/bash
set -e

unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=linux ;;
Darwin*) machine=macosx ;;
MINGW*) machine=windows ;;
*) machine="unhandled:${unameOut}" ;;
esac

CONFIG=debug

for var in "$@"; do
  if [[ $var = "release" ]]; then
    CONFIG=release
  elif [ "$var" = "memory" ]; then
    echo Will perform memory checks...
    UTILITY='leaks --atExit --'
    shift
  elif [ "$var" = "lldb" ]; then
    echo Starting debugger...
    UTILITY='lldb'
    shift
  fi
done

if [[ ! -f "dependencies/bin/premake5" ]]; then
  mkdir -p dependencies/bin
  pushd dependencies
  if [[ $machine = "macosx" ]]; then
    # v5.0.0-beta2 doesn't support apple silicon properly, update the branch
    # once a stable one is avaialble that supports it
    git clone --depth 1 --branch master https://github.com/premake/premake-core.git
    pushd premake-core
    if [[ $LOCAL_ARCH == "arm64" ]]; then
      PREMAKE_MAKE_ARCH=ARM
    else
      PREMAKE_MAKE_ARCH=x86
    fi
    make -f Bootstrap.mak osx PLATFORM=$PREMAKE_MAKE_ARCH
    cp bin/release/* ../bin
    popd
  elif [[ $machine = "windows" ]]; then
    pushd bin
    curl https://github.com/premake/premake-core/releases/download/v5.0.0-beta2/premake-5.0.0-beta2-windows.zip -L -o premake_windows.zip
    unzip premake_windows.zip
    rm premake_windows.zip
    popd
  fi
  popd
fi

export PREMAKE=$PWD/dependencies/bin/premake5

pushd test &>/dev/null

for var in "$@"; do
  if [[ $var = "clean" ]]; then
    echo 'Cleaning...'
    rm -fR out
  fi
done

mkdir -p out

if [[ $machine = "macosx" ]]; then
  TARGET=gmake2
elif [[ $machine = "windows" ]]; then
  TARGET=vs2022
fi

pushd ../../../
PACKAGES=$PWD
popd

export PREMAKE_PATH="$PACKAGES/runtime/dependencies/export-compile-commands":"$PACKAGES/runtime/build":"$PREMAKE_PATH"
echo "PREMAKE PATH IS " $PREMAKE_PATH
echo "GOT EXPECTED?"
ls $PACKAGES/runtime/build

PREMAKE_COMMANDS="--with_rive_text --with_rive_audio=external --config=$CONFIG"

out_dir() {
  echo "out/$CONFIG"
}
if [[ $machine = "macosx" ]]; then
  OUT_DIR="$(out_dir)"
  $PREMAKE $TARGET $PREMAKE_COMMANDS --out=$OUT_DIR
  pushd $OUT_DIR
  make -j$(($(sysctl -n hw.physicalcpu) + 1))
  popd
  $UTILITY $OUT_DIR/tests
elif [[ $machine = "windows" ]]; then
  if [[ -f "$PROGRAMFILES/Microsoft Visual Studio/2022/Enterprise/Msbuild/Current/Bin/MSBuild.exe" ]]; then
    export MSBUILD="$PROGRAMFILES/Microsoft Visual Studio/2022/Enterprise/Msbuild/Current/Bin/MSBuild.exe"
  elif [[ -f "$PROGRAMFILES/Microsoft Visual Studio/2022/Community/Msbuild/Current/Bin/MSBuild.exe" ]]; then
    export MSBUILD="$PROGRAMFILES/Microsoft Visual Studio/2022/Community/Msbuild/Current/Bin/MSBuild.exe"
  fi
  OUT_DIR="$(out_dir)"
  echo $PREMAKE $TARGET $PREMAKE_COMMANDS --out=$OUT_DIR
  ls -l
  $PREMAKE $TARGET $PREMAKE_COMMANDS --out=$OUT_DIR
  pushd $OUT_DIR
  "$MSBUILD" rive.sln -m:$NUMBER_OF_PROCESSORS
  popd
  $OUT_DIR/tests.exe
fi

popd &>/dev/null
