#!/bin/bash
#USE THESE SCRIPTS ONLY IF YOU ARE USING DOCKER.
# Exit when error
set -eo pipefail

GREEN='\033[1;32m'
RED='\033[1;31m'
GREY='\033[1;30m'
NC='\033[0m' # No Color
container=gv_php_1

filenames=`ls ./shell/*`

if [ -z "$1" ]; then
    echo -e "${RED}No argument supplied, available commands: ${GREEN}"
    echo
    echo -e "${GREY}-/*-/*-/*-/*-/*-/*-/* APPLICATION COMMANDS -/*-/*-/*-/*-/*-/*-/*${GREEN}"
    for entry in $filenames; do
        if [ $entry != "./shell/migrations.yml" ]; then
            echo ${entry/"./shell/"}
        fi
    done
    echo "tests"
    echo "list-tasks"
    echo
    echo -e "${GREY}-/*-/*-/*-/*-/*-/*-/* DEPENDENCY COMMANDS -/*-/*-/*-/*-/*-/*-/* ${GREEN}"
    echo "composer"
    echo
    echo -e "${GREY}-/*-/*-/*-/*-/*-/*-/* BUILDING COMMANDS -/*-/*-/*-/*-/*-/*-/*${GREEN}"
    echo "build"
    echo "phpcs"
    echo "phpcbf"
    echo -e "${GREY}-/*-/*-/*-/*-/*-/*-/* CONTAINER MANAGEMENT COMMANDS -/*-/*-/*-/*-/*-/*-/*${GREEN}"
    echo "start"
    echo "stop"
    echo "up"
    echo "down"
    echo "logs"
    echo "enter"
    exit 1
fi

if [ $1 = "tests" ]; then
    docker exec -t $container sh -c "/var/www/html/vendor/bin/phpunit"
    exit 1
fi

if [ $1 = "phpcs" ]; then
    docker exec -t gv_php_1 sh -c "/var/www/html/vendor/bin/phpcs --standard=PSR2 src/"
    exit 1
fi

if [ $1 = "phpcbf" ]; then
    docker exec -t gv_php_1 sh -c "/var/www/html/vendor/bin/phpcbf --standard=PSR2 src/"
    exit 1
fi

if [ $1 = "list-tasks" ]; then
    docker exec -t $container sh -c "crontab -l"
    exit 1
fi

if [ $1 = "enter" ]; then
    docker exec -it "$2" /bin/bash
    exit 1
fi

if [ $1 = "build" ]; then
    docker-compose rm -vsf
	docker-compose down -v --remove-orphans
	docker-compose build
    docker run --rm -v $(pwd):/app composer install
    echo "Build finished successfully."
    exit 1
fi

if [ $1 = "phpcs" ]; then
    docker exec -it $container vendor/bin/phpcs --standard=PSR2 src/
    exit 1
fi

if [ $1 = "phpcbf" ]; then
    docker exec -it $container vendor/bin/phpcbf --standard=PSR2 src/
    exit 1
fi

if [ $1 = "up" ]; then
    docker-compose up -d
    exit 1
fi

if [ $1 = "down" ]; then
    docker-compose down
    exit 1
fi

if [ $1 = "composer" ]; then
    docker run --rm -v $(pwd):/app composer "$@"
    exit 1
fi

if [ $1 = "start" ]; then
    docker-compose up
    exit 1
fi

if [ $1 = "stop" ]; then
    docker-compose stop
    exit 1
fi

if [ $1 = "logs" ]; then
    docker-compose logs -f -t
    exit 1
fi

docker exec -it ${container} php shell/"$@"
