#!/usr/bin/env bash declare -a YARN_PACKAGE_DEPS=("qortal-ui-core" "qortal-ui-plugins" "qortal-ui-crypto") YARN_LINK_DIR="${HOME}/.config/yarn/link" SHOW_HELP=0 FORCE_LINK=0 YARN_WATCH=0 RUN_SERVER=0 RUN_ELECTRON=0 while [ -n "$*" ]; do case $1 in -h) # Show help SHOW_HELP=1 ;; -f) # Force relink and reinstall dependencies FORCE_LINK=1 ;; -w) # Use "yarn watch" instead of "yarn build", to enable hot swapping YARN_WATCH=1 ;; -s) # Run server after building RUN_SERVER=1 ;; -e) # Run electron after building RUN_ELECTRON=1 ;; esac shift done if [ "${SHOW_HELP}" -eq 1 ]; then echo echo "Usage:" echo "build.sh [-h] [-f] [-s] [-e]" echo echo "-h: show help" echo "-f: force relink and reinstall dependencies" echo "-w: use 'yarn watch' instead of 'yarn build', to enable hot swapping" echo "-s: run UI server after completing the build" echo "-e: run electron server after completing the build" echo exit fi echo "Checking dependencies..." for PACKAGE in "${YARN_PACKAGE_DEPS[@]}"; do if [ "${FORCE_LINK}" -eq 1 ]; then echo "Unlinking ${PACKAGE}..." yarn --cwd "${PACKAGE}" unlink "${PACKAGE}" yarn --cwd "${PACKAGE}" unlink fi if [ ! -d "${YARN_LINK_DIR}/${PACKAGE}" ]; then echo "Installing and linking ${PACKAGE}..." yarn --cwd "${PACKAGE}" install yarn --cwd "${PACKAGE}" link yarn link "${PACKAGE}" else echo "${PACKAGE} is already linked." fi done WATCH_PID=$(cat "watch.pid" || echo "") if [ ! -z "${WATCH_PID}" ]; then echo "Stopping existing watch process..." kill "${WATCH_PID}" rm -f "watch.pid" fi if [ "${YARN_WATCH}" -eq 1 ]; then echo "Building qortal-ui in watch mode..." yarn run watch & echo "$!" > "watch.pid"; else yarn run build fi if [ "${RUN_SERVER}" -eq 1 ]; then echo "Running UI server..." trap : INT yarn run server elif [ "${RUN_ELECTRON}" -eq 1 ]; then echo "Starting electron..." trap : INT yarn run start-electron fi WATCH_PID=$(cat "watch.pid" || echo "") if [ ! -z "${WATCH_PID}" ]; then echo "Stopping watch process..." kill "${WATCH_PID}" rm -f "watch.pid" fi # Catch-all to kill any remaining processes pkill -P $$