#!/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 pull popd > /dev/null packages/desktop-client/bin/remove-untranslated-languages fi export NODE_OPTIONS="--max-old-space-size=4096" yarn workspace plugins-service build yarn workspace loot-core build:node yarn workspace @actual-app/web build --mode=desktop # electron specific build # required for running the sync-server server yarn workspace loot-core build:browser yarn workspace @actual-app/web build:browser yarn workspace @actual-app/sync-server build # Emit loot-core declarations so desktop-electron (which includes typings/window.ts) can build yarn workspace loot-core exec tsc -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 )