1
0
mirror of https://github.com/avatao-content/test-tutorial-framework synced 2024-07-05 13:48:46 +00:00
test-tutorial-framework/hack/tfw.sh

95 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
[ "$(uname)" == "Darwin" ] && readlink_cmd="greadlink" || readlink_cmd="readlink"
SCRIPT_DIR="$(dirname $($readlink_cmd -f $0))"
TAO_PATH="${TAO_PATH:-$SCRIPT_DIR/../..}"
BASEIMAGE_REPO="${BASEIMAGE_REPO:-baseimage-tutorial-framework}"
BACKEND_REPO="${BACKEND_REPO:-test-tutorial-framework}"
FRONTEND_REPO="${FRONTEND_REPO:-frontend-tutorial-framework}"
BASEIMAGE_PATH="${TAO_PATH}/${BASEIMAGE_REPO}"
BACKEND_PATH="${TAO_PATH}/${BACKEND_REPO}"
FRONTEND_PATH="${TAO_PATH}/${FRONTEND_REPO}"
BASEIMAGE_NAME="${BASEIMAGE_NAME:-baseimage-tutorial-framework}"
IMAGE_NAME="${IMAGE_NAME:-test-tutorial-framework}"
BACKEND_PORT="${BACKEND_PORT:-8888}"
AVATAO_SECRET="${AVATAO_SECRET:-secret}"
BUILD_CONTEXT="${BUILD_CONTEXT:-solvable}"
run_frontend()
{
cd $FRONTEND_PATH
yarn start
}
build_baseimage()
{
cd $BASEIMAGE_PATH
docker build -t "${BASEIMAGE_NAME}:$(baseimage_releasename)" -t "${BASEIMAGE_NAME}:latest" .
}
baseimage_releasename()
{
VERSION="$(cat VERSION | head -n 1)"
DATE="$(date +%Y%m%d)"
printf "${VERSION}-${DATE}"
}
build_backend()
{
cd $BACKEND_PATH
docker build -t $IMAGE_NAME -f ${BUILD_CONTEXT}/Dockerfile --build-arg BUILD_CONTEXT=$BUILD_CONTEXT --build-arg NOFRONTEND=1 .
}
run_backend()
{
docker run --rm -p $BACKEND_PORT:$BACKEND_PORT -e AVATAO_SECRET=$AVATAO_SECRET $IMAGE_NAME
}
build_and_run_backend()
{
build_backend
run_backend
}
build_and_start_tfw()
{
trap 'exit' INT TERM
trap 'kill 0' EXIT
build_baseimage
run_frontend & build_and_run_backend
wait
}
start_tfw()
{
trap 'exit' INT TERM
trap 'kill 0' EXIT
run_frontend & run_backend
wait
}
case $1 in
buildtfw)
build_baseimage
;;
build)
build_backend
;;
start)
start_tfw
;;
buildstart)
build_and_start_tfw
;;
*)
echo "Usage: tfw.sh [buildtfw|build|start|buildstart]"
echo " |--- buildtfw: build TFW baseimage"
echo " |--- build: build TFW test"
echo " |--- start: start TFW test"
echo " |--- buildstart: build all, then start TFW test"
;;
esac