#!/bin/bash

DOCKER_CASSANDRA="cassandra"
DOCKER_LACASSA_IMAGE="shahinsorkh/lacassa:v0.1.3"
DOCKER_NETWORK="--network=container:$DOCKER_CASSANDRA"

if [ ! -z "$SUDO_USER" ]; then
    U="$SUDO_USER"
elif [ ! -z "$USER" ]; then
    U="$USER"
else
    U="$(whoami)"
fi
DOCKER_USER="$(awk -F':' "/^$U/ {print \$3\":\"\$4}" /etc/passwd)"

if [ -z "$NO_CHECK" ]; then
    if ! ( docker ps >/dev/null 2>/dev/null ); then
        echo '[ERR] Could not connect to docker daemon socket' >&2
        echo '      Retry with root access' >&2
        exit 1
    fi

    if [ ! -d vendor ]; then
        docker run \
            --interactive --tty \
            --user $DOCKER_USER \
            --volume "$(pwd):/app:z" \
            --volume "/etc/passwd:/etc/passwd:Z,ro" \
            --volume "/etc/group:/etc/group:Z,ro" \
            $DOCKER_LACASSA_IMAGE composer install --prefer-dist -o
    fi

    if ! ( docker container ps | awk '{print $NF}' | grep cassandra -c >/dev/null 2>/dev/null ); then
        echo '-=-=-=-! No cassandra server found!' >&2
        echo '-=-=-=- Running one..'
        docker run --detach \
            --volume $DOCKER_CASSANDRA:/var/lib/cassandra \
            --name=$DOCKER_CASSANDRA \
            cassandra:3 && \
            echo '-=-=-=- Retry after a few minutes'
        exit $?
    fi

    echo '-=-=-=- Filling database with fake data..'
    docker run $DOCKER_NETWORK \
        --interactive --tty \
        --user $DOCKER_USER \
        --volume "$(pwd):/app:z" \
        $DOCKER_LACASSA_IMAGE php prepare_db.php && \
        echo '-=-=-=- Done.'
fi

echo '-=-=-=- Running command..'
docker run $DOCKER_NETWORK \
    --interactive --tty \
    --user $DOCKER_USER \
    --volume "$(pwd):/app:z" \
    --volume "/etc/passwd:/etc/passwd:Z,ro" \
    --volume "/etc/group:/etc/group:Z,ro" \
    $DOCKER_LACASSA_IMAGE $@

