Newer
Older
#!/bin/bash
# Building a Docker image in which to execute tests
# will require a copy of the local Capo properties
# file, which can be found at /home/casa/capo
# on boxes that can see /home, but which on boxes
# that can't is likely to be at ~/home/.capo for
# any given user. Find local.properties and

jgoldste
committed
# copy it to our test directory. Dockerfiles
# do not support conditional logic; hence this script.
# Execute script from apps/executables/cli/datafetcher/

Janet Goldstein
committed
FILENAME=local.properties
CONTAINER_NAME=$1;shift
CACHE_FLAG=$1;shift

Janet Goldstein
committed
USAGE='Usage: $0 <container_name> [--NO-CACHE]'
if [[ -z "${CONTAINER_NAME}" ]]
then
echo "${USAGE}"
exit 1
fi
if [ -z "${CACHE_FLAG}" ]
then
shopt -s nocasematch
if [[ "${CACHE_FLAG}" =~ ^NO[-_]CACHE$ ]]
then
echo 'invalid cache flag: '"${CACHE_FLAG}"
exit 1
else
USE_CACHE=1
fi
else
USE_CACHE=0
fi
# conda will need the environment.yml
export ENV_YML=environment.yml
export YML_DIR=../../../../
cp $YML_DIR${ENV_YML} ${ENV_YML}

jgoldste
committed
# The preferred version of Capo .properties files is always
# the one at /home/casa/capo, -if- this is visible
# (i.e., NRAO internal system). If not (i.e., developer laptop),
# get the one in the user's .capo directory
if [ -e /home/casa/capo/${FILENAME} ]
then
SOURCE=/home/casa/capo/${FILENAME}
elif [ -e ~/.capo/${FILENAME} ]
then
SOURCE=~/.capo/${FILENAME}
else
echo '${FILENAME} not found!'
exit 1
fi
NEW_FILE=./test/${FILENAME}
cp ${SOURCE} ${NEW_FILE}
# remove extended attributes, which would cause Capo to balk
/usr/bin/xattr -c ${NEW_FILE}
## where the magic happens
if [ "${USE_CACHE}" == 1 ]
then
echo '>>>> Using cache, if possible'
docker build . -f test/Dockerfile -t ${CONTAINER_NAME}
else
echo '>>>> no cache'
docker build . -f test/Dockerfile --no-cache -t ${CONTAINER_NAME}
fi
# now get rid of the properties file; containing sensitive info, it must NOT be saved or committed
rm -f ${NEW_FILE}
# get rid of the .yml, too
rm -f ${ENV_YML}
# to run the image: docker run ${CONTAINER_NAME}[:latest]