lila/ui/build

83 lines
2.7 KiB
Bash
Executable File

#!/bin/bash -ea
target=${1-dev}
mode=${2-build} # build | upgrade | css | js
echo "building ui modules with target=$target and mode=$mode"
nodever="$(node --version)"
echo "node: $nodever"
echo "yarn: $(yarn --version)"
[[ "$nodever" =~ ^(v12\.[2-9][0-9]\.[0-9]+)|(v14\.1[3-9]\.[0-9]+)|(v1[5-6]\.[0-9]+\.[0-9]+)$ ]] || { echo "Node version >=12.20 or >=14.13 and <=16 required. Found: $nodever"; exit 1; }
cd "$(git rev-parse --show-toplevel)"
mkdir -p public/compiled
apps1="common"
apps2="chess palantir"
apps3="ceval game tree chat nvui puz"
apps4="site swiss msg cli challenge notify learn insight editor puzzle round analyse lobby tournament tournamentSchedule tournamentCalendar simul dasher speech serviceWorker dgt storm racer"
site_plugins="tvEmbed puzzleEmbed analyseEmbed user modUser clas coordinate captcha expandText team forum account coachShow coachForm challengePage checkout plan login passwordComplexity tourForm teamBattleForm gameSearch userComplete infiniteScroll flatpickr teamAdmin appeal modGames publicChats contact userGamesDownload modActivity tvGames ublog ublogForm"
round_plugins="nvui keyboardMove"
analyse_plugins="nvui studyTopicForm"
puzzle_plugins="nvui dashboard"
if [ $mode == "upgrade" ]; then
yarn upgrade --non-interactive
else
yarn install --non-interactive
fi
build() {
echo
echo "### ui/$@ ###"
set -ev
if [[ $1 == "css" ]]; then
cd ui
yarn run gulp "css-$target"
else
cd ui/$1
yarn run $target
fi
}
build_plugin() {
echo
echo "### ui/$1 plugin $2 ###"
set -ev
cd ui/$1
yarn run plugin-$target $2
}
if [ $mode != "upgrade" ] && [ $mode != "js" ]; then
apps4="css $apps4"
fi
if [ $mode == "css" ]; then
(build css)
else
if type -p parallel; then # parallel execution!
if [ -z "$P_OPTS" -a ! -e ~/.parallel/config ]; then
P_OPTS="-j+4 --halt 2"
[ -n "$GITHUB_WORKFLOW" ] || P_OPTS+=" --bar"
fi
set -x
parallel --gnu $P_OPTS build ::: $apps1
parallel --gnu $P_OPTS build ::: $apps2
parallel --gnu $P_OPTS build ::: $apps3
parallel --gnu $P_OPTS build ::: $apps4
parallel --gnu $P_OPTS build_plugin site ::: $site_plugins
parallel --gnu $P_OPTS build_plugin round ::: $round_plugins
parallel --gnu $P_OPTS build_plugin analyse ::: $analyse_plugins
parallel --gnu $P_OPTS build_plugin puzzle ::: $puzzle_plugins
else # sequential execution
echo "For faster builds, install GNU parallel."
for app in $apps1 $apps2 $apps3 $apps4; do (build $app); done
for plugin in $site_plugins; do (build_plugin site $plugin); done
for plugin in $round_plugins; do (build_plugin round $plugin); done
for plugin in $analyse_plugins; do (build_plugin analyse $plugin); done
for plugin in $puzzle_plugins; do (build_plugin puzzle $plugin); done
fi
fi