#!/usr/bin/env bash
#-------------------------------------------------------------------------------
set -e

DEFAULT_MCMI_IMAGE="${DEFAULT_MCMI_IMAGE:-mcmi/mcmi:latest}"

MCMI_DATA="${MCMI_DATA:-"$HOME/.mcmi/data"}"
MCMI_CONFIG="${MCMI_DATA}/django.env"
PG_CONFIG="${MCMI_DATA}/pg.credentials.env"
MCMI_LIB="${MCMI_LIB:-"$HOME/.mcmi/lib"}"

mkdir -p "${MCMI_DATA}"
mkdir -p "${MCMI_LIB}"

if [ ! -f "${MCMI_CONFIG}" ]
then
    echo "
MCMI_SECRET_KEY=0123456789876543210
" > "${MCMI_CONFIG}"
fi
if [ ! -f "${PG_CONFIG}" ]
then
    echo "
MCMI_POSTGRES_DB=0123456789876543210
MCMI_POSTGRES_USER=0123456789876543210
MCMI_POSTGRES_PASSWORD=0123456789876543210
MCMI_REDIS_PASSWORD=0123456789876543210
" > "${PG_CONFIG}"
fi

if [ -f "${MCMI_DATA}/mcmi.env" ]
then
    source "${MCMI_DATA}/mcmi.env"
else
    MCMI_REPO=''
    MCMI_IMAGE="${DEFAULT_MCMI_IMAGE}"
fi

function sync_image() {
    IMAGE="$1"

    if [ ! -z "${MCMI_REPO}" ]
    then
        MCMI_REMOTE="${MCMI_REPO}/${IMAGE}"
    else
        MCMI_REMOTE="${IMAGE}"
    fi

    if [ ! -z "${MCMI_SYNC}" ]
    then
        docker pull "${MCMI_REMOTE}" >/dev/null 2>&1
    fi
    echo "$IMAGE"
}

MCMI_IMAGE="$(sync_image ${MCMI_IMAGE})"
if ! docker inspect "${MCMI_IMAGE}" >/dev/null 2>&1
then
    rm -f /var/local/mcmi/mcmi.env
    MCMI_IMAGE="$(sync_image ${DEFAULT_MCMI_IMAGE})"
fi
docker run --rm --interactive --tty \
    --env "MCMI_CLI_EXEC=True" \
    --env-file "${MCMI_CONFIG}" \
    --env-file "${PG_CONFIG}" \
    --env-file <(env | grep "MCMI_") \
    --network host \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume "${MCMI_DATA}":/var/local/mcmi \
    --volume "${MCMI_LIB}":/usr/local/lib/mcmi \
    "${MCMI_IMAGE}" "${@}"
