#!/bin/bash

function getConfig {
  if [[ ! -n ${PHP_VERSION} ]]; then
    while true; do
        read -p "Which PHP version is your project using? " PHP_VERSION
        case ${PHP_VERSION} in
            7.0 ) break;;
            7.1 ) break;;
            7.2 ) break;;
            7.3 ) break;;
            7.4 ) break;;
            8.0 ) break;;
            * ) echo "Version not supported.";;
        esac
    done
  fi
  if [[ ! -n ${COMPOSER_DOWNGRADE} ]]; then
    while true; do
        read -p "Do you want to downgrade Composer to version 1? " COMPOSER_DOWNGRADE
        case ${COMPOSER_DOWNGRADE} in
            0 ) break;;
            1 ) break;;
            * ) echo "Only 1 or 0 are valid responses.";;
        esac
    done
  fi
  if [[ ! -n ${COMPOSE_PROJECT_NAME} ]]; then
    read -p "Name your project (used as subdomain): " COMPOSE_PROJECT_NAME
  fi
}

function startContainer {
  if [[ -n ${COMPOSE_PROJECT_NAME} ]]; then
    ID=$(docker container ls --all -q -f name=^${COMPOSE_PROJECT_NAME}_l3d$)
    if [[ -n ${ID} ]]; then
      docker start ${COMPOSE_PROJECT_NAME}_l3d
    else
      case "${L3DHOSTOS}" in
        Darwin*)
          docker run --name ${COMPOSE_PROJECT_NAME}_l3d -dt \
            --hostname ${COMPOSE_PROJECT_NAME}-l3d \
            --group-add ${GROUPIDS// / --group-add } \
            --env L3DSHELL=${L3DSHELL} \
            --env COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} \
            --env COMPOSER_DOWNGRADE=${COMPOSER_DOWNGRADE} \
            --env PHP_VERSION=${PHP_VERSION} \
            --env SSH_AUTH_SOCK=${SSHAUTHSOCK} \
            --volume /var/run/docker.sock:/var/run/docker.sock \
            --volume ${WORKDIR}:/drupal \
            --volume /etc/group:/etc/group:ro \
            --volume /etc/passwd:/etc/passwd:ro \
            --volume /etc/shadow:/etc/shadow:ro \
            --volume /etc/sudoers:/etc/sudoers:ro \
            --volume /etc/sudoers.d:/etc/sudoers.d:ro \
            --volume ${SSHAUTH}:${SSHAUTHSOCK} \
            --volume ${HOMEDIR}:${HOMEDIR} \
            --workdir /drupal \
            --restart unless-stopped \
            registry.lakedrops.com/docker/l3d/php-${PHP_VERSION}:${VERSION}
          ;;
        *)
          docker run --name ${COMPOSE_PROJECT_NAME}_l3d -dt \
            --hostname ${COMPOSE_PROJECT_NAME}-l3d \
            --user ${USERID}:${GROUPID} \
            --group-add ${GROUPIDS// / --group-add } \
            --env L3DSHELL=${L3DSHELL} \
            --env COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} \
            --env COMPOSER_DOWNGRADE=${COMPOSER_DOWNGRADE} \
            --env PHP_VERSION=${PHP_VERSION} \
            --env SSH_AUTH_SOCK=${SSHAUTHSOCK} \
            --volume /var/run/docker.sock:/var/run/docker.sock \
            --volume ${WORKDIR}:/drupal \
            --volume /etc/group:/etc/group:ro \
            --volume /etc/passwd:/etc/passwd:ro \
            --volume /etc/shadow:/etc/shadow:ro \
            --volume /etc/sudoers:/etc/sudoers:ro \
            --volume /etc/sudoers.d:/etc/sudoers.d:ro \
            --volume ${SSHAUTH}:${SSHAUTHSOCK} \
            --volume ${HOMEDIR}:${HOMEDIR} \
            --workdir /drupal \
            --restart unless-stopped \
            registry.lakedrops.com/docker/l3d/php-${PHP_VERSION}:${VERSION}
      esac
    fi
    docker exec -it \
      --env HOMEDIR=${HOMEDIR} \
      --env WORKDIR=${WORKDIR} \
      --env SSHAUTH=${SSHAUTH} \
      ${COMPOSE_PROJECT_NAME}_l3d \
      /usr/local/bin/.start
  fi
}

if [[ -n $1 ]]; then
  ID=$(docker container ls --all -q -f name=^$1_l3d$)
  if [[ -n ${ID} ]]; then
    PHP_VERSION=unknown
    COMPOSE_PROJECT_NAME=$1
  fi
fi
getConfig
startContainer