#!/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_LOCAL" ]; then if [ ! -d "$VASSAL_LOCAL" ]; then echo "Can't find the VASSAL directory: $VASSAL_LOCAL" exit 1 fi VASSAL=/data/vassal/ VASSAL_VOLUME="--volume `readlink -f "$VASSAL_LOCAL"`:$VASSAL" VASSAL_ENV="--env VASSAL_DIR=$VASSAL" fi # check if a VASL .vmod file has been specified if [ -n "$VASL_MOD_LOCAL" ]; then if [ ! -f "$VASL_MOD_LOCAL" ]; then echo "Can't find the VASL .vmod file: $VASL_MOD_LOCAL" exit 1 fi VASL_MOD=/data/vasl.vmod VASL_MOD_VOLUME="--volume `readlink -f "$VASL_MOD_LOCAL"`:$VASL_MOD" VASL_MOD_ENV="--env VASL_MOD=$VASL_MOD" fi # check if a VASL boards directory has been specified if [ -n "$VASL_BOARDS_LOCAL" ]; then if [ ! -d "$VASL_BOARDS_LOCAL" ]; then echo "Can't find the VASL boards directory: $VASL_BOARDS_LOCAL" exit 1 fi VASL_BOARDS=/data/boards/ VASL_BOARDS_VOLUME="--volume `readlink -f "$VASL_BOARDS_LOCAL"`:$VASL_BOARDS" VASL_BOARDS_ENV="--env VASL_BOARDS_DIR=$VASL_BOARDS" fi # check if a VASL extensions directory has been specified if [ -n "$VASL_EXTNS_LOCAL" ]; then if [ ! -d "$VASL_EXTNS_LOCAL" ]; then echo "Can't find the VASL extensions directory: $_EXTNS_DIR_LOCAL" exit 1 fi VASL_EXTNS=/data/vasl-extensions/ VASL_EXTNS_VOLUME="--volume `readlink -f "$VASL_EXTNS_LOCAL"`:$VASL_EXTNS" VASL_EXTNS_ENV="--env VASL_EXTNS_DIR=$VASL_EXTNS" fi # check if a Chapter H notes directory has been specified if [ -n "$CHAPTER_H_NOTES_LOCAL" ]; then if [ ! -d "$CHAPTER_H_NOTES_LOCAL" ]; then echo "Can't find the Chapter H notes directory: $CHAPTER_H_NOTES_LOCAL" exit 1 fi CHAPTER_H_NOTES=/data/chapter-h-notes/ CHAPTER_H_NOTES_VOLUME="--volume `readlink -f "$CHAPTER_H_NOTES_LOCAL"`:$CHAPTER_H_NOTES" CHAPTER_H_NOTES_ENV="--env CHAPTER_H_NOTES_DIR=$CHAPTER_H_NOTES" fi # check if a template pack has been specified if [ -n "$TEMPLATE_PACK_LOCAL" ]; then # NOTE: The template pack can either be a file (ZIP) or a directory. if ! ls "$TEMPLATE_PACK_LOCAL" >/dev/null 2>&1 ; then echo "Can't find the template pack: $TEMPLATE_PACK_LOCAL" exit 1 fi TEMPLATE_PACK=/data/template-pack TEMPLATE_PACK_VOLUME="--volume `readlink -f "$TEMPLATE_PACK_LOCAL"`:$TEMPLATE_PACK" TEMPLATE_PACK_ENV="--env DEFAULT_TEMPLATE_PACK=$TEMPLATE_PACK" fi # check if a user files directory has been specified if [ -n "$USER_FILES_LOCAL" ]; then if [ ! -d "$USER_FILES_LOCAL" ]; then echo "Can't find the user files directory: $USER_FILES_LOCAL" exit 1 fi USER_FILES=/data/user-files/ USER_FILES_VOLUME="--volume `readlink -f "$USER_FILES_LOCAL"`:$USER_FILES" USER_FILES_ENV="--env USER_FILES_DIR=$USER_FILES" fi # build the container if [ -z "$NO_BUILD" ]; then echo Building the \"$TAG\" container... docker build $BUILD_NETWORK --tag vasl-templates:$TAG . 2>&1 \ | sed -e 's/^/ /' if [ ${PIPESTATUS[0]} -ne 0 ]; then exit 10 ; fi echo fi # launch the container echo Launching the \"$TAG\" container... docker run \ --publish $PORT:5010 \ --name vasl-templates \ $VASSAL_VOLUME $VASL_MOD_VOLUME $VASL_BOARDS_VOLUME $VASL_EXTNS_VOLUME $CHAPTER_H_NOTES_VOLUME $USER_FILES_VOLUME $TEMPLATE_PACK_VOLUME \ $VASSAL_ENV $VASL_MOD_ENV $VASL_BOARDS_ENV $VASL_EXTNS_ENV $CHAPTER_H_NOTES_ENV $USER_FILES_ENV $TEMPLATE_PACK_ENV \ $RUN_NETWORK $DETACH \ -it --rm \ vasl-templates:$TAG \ 2>&1 \ | sed -e 's/^/ /' exit ${PIPESTATUS[0]}