forked from Qortal/qortal-ui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.3 KiB
106 lines
2.3 KiB
#!/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 $$
|
|
|