#!/bin/bash -e


ROOT=`dirname $0`
RELEASE=""
CI=${CI:-false}

cd "$ROOT/.."
POSITIONAL=()
SKIP_EXE_BUILD=false
SKIP_TRANSLATIONS=false
while [[ $# -gt 0 ]]; do
  key="$1"

  case $key in
      --release)
      RELEASE="production"
      shift
      ;;
      --skip-exe-build)
      SKIP_EXE_BUILD=true
      shift
      ;;
      --skip-translations)
      SKIP_TRANSLATIONS=true
      shift
      ;;
      *)
      POSITIONAL+=("$1")
      shift
      ;;
  esac
done

set -- "${POSITIONAL[@]}"

if [ $SKIP_TRANSLATIONS == false ]; then
  # Get translations
  echo "Updating translations..."
  if ! [ -d packages/desktop-client/locale ]; then
      git clone https://github.com/actualbudget/translations packages/desktop-client/locale
  fi

  pushd packages/desktop-client/locale > /dev/null

  git checkout .
  git pull
  popd > /dev/null
  packages/desktop-client/bin/remove-untranslated-languages
fi

export NODE_OPTIONS="--max-old-space-size=4096"

yarn workspace @actual-app/crdt build
yarn workspace plugins-service build
yarn workspace @actual-app/core build:node
yarn workspace @actual-app/web build --mode=desktop # electron specific build

# required for running the sync-server server
yarn workspace @actual-app/core build:browser
yarn workspace @actual-app/web build:browser
yarn workspace @actual-app/sync-server build

# Emit @actual-app/core declarations so desktop-electron (which includes typings/window.ts) can build
yarn workspace @actual-app/core exec tsgo -p tsconfig.json

yarn workspace desktop-electron update-client

(
    cd packages/desktop-electron;
    yarn clean;

    if [ $SKIP_EXE_BUILD == true ]; then
        echo "Building the dist"
        yarn build:dist
        echo "Skipping exe build"
    else
      if [ "$RELEASE" == "production" ]; then
          yarn build

          echo "Created release"
      else
          yarn build
      fi
    fi
)
