#!/bin/bash

CONTAINER_NAME="nerdhunters-webapp"

if ! docker ps | grep -q $CONTAINER_NAME
then
    read -p "Docker containers not running. Do you wish to start them? [Yn]" -n 1 -r reply
    echo
    reply=${reply:-Y}

    if [[ $reply =~ ^[Yy]$ ]]
    then
        if [ -f docker-compose.yml ]
        then
            docker compose up -d
        else
            echo "No docker-compose.yml in current directory. Aborting."
            exit 1
        fi
    else
        exit 1
    fi
fi

if ! docker exec $CONTAINER_NAME cat /etc/passwd | awk -F: '{print $3}' | grep -q "^$(id -u)$"
then
    docker exec $CONTAINER_NAME adduser -S --disabled-password --gecos '' --uid "$(id -u)" docker_proxy wheel
fi

if [ "$1" == "init" ]; then
    until [ -f vendor/autoload.php ]
    do
        echo "Composer dependencies not found, waiting for 5 seconds..."
        sleep 5
    done

    docker exec $CONTAINER_NAME chown -R "$(id -u):$(id -g)" .
    docker exec $CONTAINER_NAME php artisan key:generate
    docker exec $CONTAINER_NAME php artisan migrate:fresh --seed
    docker exec -u "$(id -u):$(id -g)" $CONTAINER_NAME php artisan helpers
    docker exec $CONTAINER_NAME php artisan document:delivery:price:download
    docker exec $CONTAINER_NAME php artisan document:delivery:price:update
    docker exec -u "$(id -u):$(id -g)" $CONTAINER_NAME yarn install
    docker exec -u "$(id -u):$(id -g)" $CONTAINER_NAME yarn run dev
elif [ "$1" == "fix" ]; then
    docker exec -u "$(id -u):$(id -g)" $CONTAINER_NAME vendor/bin/php-cs-fixer fix --show-progress=dots
elif [ "$1" == "phpstan" ]; then
    docker exec -u "$(id -u):$(id -g)" $CONTAINER_NAME vendor/bin/phpstan --memory-limit=2G
elif [ "$1" == "test" ]; then
    docker exec -u "$(id -u):$(id -g)" -it $CONTAINER_NAME php artisan test
else
    docker exec -u "$(id -u):$(id -g)" -it $CONTAINER_NAME "$@"
fi
