#!/usr/bin/env bash # Helper script that builds and launches the Docker container. # --------------------------------------------------------------------- function print_help { echo "`basename "$0"` {options}" cat <&2 exit 1 ;; esac done # check if a VASSAL directory has been specified if [ -n "$VASSAL" ]; then if [ ! -d "$VASSAL" ]; then echo "Can't find the VASSAL directory: $VASSAL" exit 1 fi target=/data/vassal/ VASSAL_VOLUME="--volume `readlink -f "$VASSAL"`:$target" VASSAL_ENV="--env VASSAL_DIR=$target" fi # check if a VASL module file has been specified if [ -n "$VASL_MOD" ]; then if [ ! -f "$VASL_MOD" ]; then echo "Can't find the VASL .vmod file: $VASL_MOD" exit 1 fi target=/data/vasl.vmod VASL_MOD_VOLUME="--volume `readlink -f "$VASL_MOD"`:$target" VASL_MOD_ENV="--env VASL_MOD=$target" fi # check if a VASL extensions directory has been specified if [ -n "$VASL_EXTNS" ]; then if [ ! -d "$VASL_EXTNS" ]; then echo "Can't find the VASL extensions directory: $VASL_EXTNS" exit 1 fi target=/data/vasl-extensions/ VASL_EXTNS_VOLUME="--volume `readlink -f "$VASL_EXTNS"`:$target" VASL_EXTNS_ENV="--env VASL_EXTNS_DIR=$target" fi # check if a VASL boards directory has been specified if [ -n "$VASL_BOARDS" ]; then if [ ! -d "$VASL_BOARDS" ]; then echo "Can't find the VASL boards directory: $VASL_BOARDS" exit 1 fi target=/data/boards/ VASL_BOARDS_VOLUME="--volume `readlink -f "$VASL_BOARDS"`:$target" VASL_BOARDS_ENV="--env BOARDS_DIR=$target" fi # check if a Chapter H notes directory has been specified if [ -n "$CHAPTER_H_NOTES" ]; then if [ ! -d "$CHAPTER_H_NOTES" ]; then echo "Can't find the Chapter H notes directory: $CHAPTER_H_NOTES" exit 1 fi target=/data/chapter-h-notes/ CHAPTER_H_NOTES_VOLUME="--volume `readlink -f "$CHAPTER_H_NOTES"`:$target" CHAPTER_H_NOTES_ENV="--env CHAPTER_H_NOTES_DIR=$target" fi # check if a user files directory has been specified if [ -n "$USER_FILES" ]; then if [ ! -d "$USER_FILES" ]; then echo "Can't find the user files directory: $USER_FILES" exit 1 fi target=/data/user-files/ USER_FILES_VOLUME="--volume `readlink -f "$USER_FILES"`:$target" USER_FILES_ENV="--env USER_FILES_DIR=$target" fi # check if a template pack has been specified if [ -n "$TEMPLATE_PACK" ]; then # NOTE: The template pack can either be a file (ZIP) or a directory. if ! ls "$TEMPLATE_PACK" >/dev/null 2>&1 ; then echo "Can't find the template pack: $TEMPLATE_PACK" exit 1 fi target=/data/template-pack TEMPLATE_PACK_VOLUME="--volume `readlink -f "$TEMPLATE_PACK"`:$target" TEMPLATE_PACK_ENV="--env DEFAULT_TEMPLATE_PACK=$target" fi # check if testing has been enabled if [ -n "$CONTROL_TESTS_PORT" ]; then CONTROL_TESTS_PORT_BUILD="--build-arg CONTROL_TESTS_PORT=$CONTROL_TESTS_PORT" CONTROL_TESTS_PORT_RUN="--env CONTROL_TESTS_PORT=$CONTROL_TESTS_PORT --publish $CONTROL_TESTS_PORT:$CONTROL_TESTS_PORT" fi # build the image if [ -z "$NO_BUILD" ]; then echo Building the \"$IMAGE_TAG\" image... docker build \ --tag vasl-templates:$IMAGE_TAG \ $CONTROL_TESTS_PORT_BUILD \ $BUILD_NETWORK \ . 2>&1 \ | sed -e 's/^/ /' if [ ${PIPESTATUS[0]} -ne 0 ]; then exit 10 ; fi echo fi # launch the container echo Launching the \"$IMAGE_TAG\" image as \"$CONTAINER_NAME\"... docker run \ --name $CONTAINER_NAME \ --publish $PORT:5010 \ $CONTROL_TESTS_PORT_RUN \ $VASSAL_VOLUME $VASL_MOD_VOLUME $VASL_EXTNS_VOLUME $VASL_BOARDS_VOLUME $CHAPTER_H_NOTES_VOLUME $TEMPLATE_PACK_VOLUME $USER_FILES_VOLUME \ $VASSAL_ENV $VASL_MOD_ENV $VASL_EXTNS_ENV $VASL_BOARDS_ENV $CHAPTER_H_NOTES_ENV $TEMPLATE_PACK_ENV $USER_FILES_ENV \ $RUN_NETWORK $DETACH \ $TEST_DATA_VASSAL $TEST_DATA_VASL_MODS \ -it --rm \ vasl-templates:$IMAGE_TAG \ 2>&1 \ | sed -e 's/^/ /' exit ${PIPESTATUS[0]}