#!/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

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 ../../
RUNTIME=$PWD
popd

export PREMAKE_PATH="$RUNTIME/dependencies/export-compile-commands":"$RUNTIME/build":"$PREMAKE_PATH"
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
