#!/bin/bash

IMAGE=$1
if [ -z "$1" ]; then
    IMAGE=harbor.hq.rosti.cz/rosti/runtime:test
fi

RCol='\e[0m'    # Text Reset

# Regular           Bold                Underline           High Intensity      BoldHigh Intens     Background          High Intensity Backgrounds
Bla='\e[0;30m';     BBla='\e[1;30m';    UBla='\e[4;30m';    IBla='\e[0;90m';    BIBla='\e[1;90m';   On_Bla='\e[40m';    On_IBla='\e[0;100m';
Red='\e[0;31m';     BRed='\e[1;31m';    URed='\e[4;31m';    IRed='\e[0;91m';    BIRed='\e[1;91m';   On_Red='\e[41m';    On_IRed='\e[0;101m';
Gre='\e[0;32m';     BGre='\e[1;32m';    UGre='\e[4;32m';    IGre='\e[0;92m';    BIGre='\e[1;92m';   On_Gre='\e[42m';    On_IGre='\e[0;102m';
Yel='\e[0;33m';     BYel='\e[1;33m';    UYel='\e[4;33m';    IYel='\e[0;93m';    BIYel='\e[1;93m';   On_Yel='\e[43m';    On_IYel='\e[0;103m';
Blu='\e[0;34m';     BBlu='\e[1;34m';    UBlu='\e[4;34m';    IBlu='\e[0;94m';    BIBlu='\e[1;94m';   On_Blu='\e[44m';    On_IBlu='\e[0;104m';
Pur='\e[0;35m';     BPur='\e[1;35m';    UPur='\e[4;35m';    IPur='\e[0;95m';    BIPur='\e[1;95m';   On_Pur='\e[45m';    On_IPur='\e[0;105m';
Cya='\e[0;36m';     BCya='\e[1;36m';    UCya='\e[4;36m';    ICya='\e[0;96m';    BICya='\e[1;96m';   On_Cya='\e[46m';    On_ICya='\e[0;106m';
Whi='\e[0;37m';     BWhi='\e[1;37m';    UWhi='\e[4;37m';    IWhi='\e[0;97m';    BIWhi='\e[1;97m';   On_Whi='\e[47m';    On_IWhi='\e[0;107m';

if test -z "$DOCKER"; then
    DOCKER=docker
fi

CONTAINER_NAME=dev_test
$DOCKER stop $CONTAINER_NAME &>/dev/null

COUNT=`cat Dockerfile | grep -e "build_" | grep -v "/usr/local" | sed "s/RUN //" |  sed "s/ADD //" | sed 's/& \\\//' | sed "s/^[ ]*//" | sed "s/build_//" | sed "s/\.sh//" | sed "s/php8/php/" | wc -l`
I=1

cat Dockerfile | grep -e "build_" | grep -v "/usr/local" | sed "s/RUN //" |  sed "s/ADD //" | sed 's/& \\//' | sed "s/^[ ]*//" | sed "s/build_//" | sed "s/\.sh//" | sed "s/php8/php/" | \
while read line
do
    tech=`echo $line | cut -d " " -f 1`
    tech_version=`echo $line | cut -d " " -f 2`

    echo -e "${BRed}:: ($I/$COUNT) ${Yel}Testing ${BWhi}$tech ${Gre}$tech_version${RCol}"

    set -e

    echo -e "${BRed}.. ${Yel}starting test container${RCol}"
    $DOCKER run -d --rm --name $CONTAINER_NAME $IMAGE > /dev/null || exit 1
    echo -e "${BRed}.. ${Yel}ten seconds sleep${RCol}"
    sleep 10
    
    echo -e "${BRed}.. ${Yel}setting up the tech${RCol}"
    $DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=$tech-$tech_version $CONTAINER_NAME su app -c rosti > /dev/null || exit 1
    echo -e "${BRed}.. ${Yel}three seconds sleep${RCol}"
    sleep 3
    echo -e "${BRed}.. ${Yel}trying to get HTTP status code 200${RCol}"
    $DOCKER exec $CONTAINER_NAME curl --head http://localhost:8000 | grep "HTTP/1.1 200" || exit 2
    
    set +e

    echo -e "${BRed}.. ${Yel}cleaning this round${RCol}"
    $DOCKER stop $CONTAINER_NAME &>/dev/null || exit 1
    sleep 1

    ((I++))
    
done