Rocket.Chat.ReactNative/e2e/docker/controlRCDemoEnv.sh

70 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
PAUSE_ON_FAIL_FOR_DEBUG=0
COMMAND="start"
if [ "$1" != "" ]; then
if [[ "$1" =~ ^(start|startandwait|stop)$ ]]; then
COMMAND=$1
else
echo "Invalid command. Must be one of: start,stop"
exit 1
fi
fi
WAIT=0
if [ "$COMMAND" == "startandwait" ]; then
COMMAND="start"
WAIT=1
fi
COMPOSEPATH="$SCRIPTPATH/rc_test_env"
export DATAROOT="$SCRIPTPATH"
if [ "$COMMAND" == "start" ]; then
echo "Fetching infrastructure config from GitHub"
COMPOSEURL=https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml
COMPOSEFILE="$COMPOSEPATH/docker-compose.yml"
curl -s "$COMPOSEURL" -o "$COMPOSEFILE"
echo "Starting infrastructure"
(
if [ -d "$SCRIPTPATH/data/db" ]; then rm -rf "$SCRIPTPATH/data/db"; fi
cd "$COMPOSEPATH"
docker-compose up -d
)
if [ $WAIT == 1 ]; then
echo "Waiting for RocketChat to be ready"
ATTEMPT_NUMBER=0
MAX_ATTEMPTS=60
while [ $ATTEMPT_NUMBER -lt $MAX_ATTEMPTS ]; do # https://stackoverflow.com/a/21189312/399007
ATTEMPT_NUMBER=$((ATTEMPT_NUMBER + 1 ))
echo "Checking if servers are ready (attempt $ATTEMPT_NUMBER of $MAX_ATTEMPTS)"
LOGS=$(docker logs rc_test_env_rocketchat_1 2> /dev/null)
if grep -q 'SERVER RUNNING' <<< $LOGS ; then
echo "RocketChat is ready!"
break
else
if [ $ATTEMPT_NUMBER == $MAX_ATTEMPTS ]; then
echo "RocketChat failed to start"
if [ $PAUSE_ON_FAIL_FOR_DEBUG == 1 ]; then
read -n 1 -s -r -p "Press any key to tear down infrastructure." && echo
fi
docker-compose down --volumes
exit 1
fi
fi
sleep 4
done
fi
fi
if [ "$COMMAND" == "stop" ]; then
(
cd "$COMPOSEPATH"
docker-compose down --volumes
)
fi