#!/usr/bin/env bash

# Usage: ./build [frontend|export] [extra cargo params...]
#
# With no target, builds both. Set BUILD_MODE=release (or NODE_ENV=production)
# for an optimized build. See `_build_env` for what each target changes.

_SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
_RENDER_TARGET=${1:-}

case "$_RENDER_TARGET" in
    frontend|export) ;;
    "")
        # Each target needs its own `_build_env`, so re-enter per target.
        for _target in frontend export; do
            "$_SCRIPT_DIR/build" "$_target" "$@" || exit $?
        done
        exit 0
        ;;
    *)
        echo "ERROR: unknown render target '$_RENDER_TARGET' (expected 'frontend' or 'export')" >&2
        exit 1
        ;;
esac

set -e

EMSDK_QUIET=1 . /opt/emsdk/emsdk_env.sh

pushd "$_SCRIPT_DIR" > /dev/null

export RENDER_TARGET="$_RENDER_TARGET"
. ./_build_env "$_RENDER_TARGET"
. ./_build_lock

acquire_build_lock

set -x

setup
build
copy_target_artifacts

popd > /dev/null
