#!/bin/bash

set -e

USAGE="Magento Cloud Docker

\033[33mArguments:\033[0m
  pull              pull latest images
  up                destroy, re-create and start containers
  down              destroy containers
  bash              connect to bash
  stop              stop containers
  start             start containers
  restart           restart containers
  ece-build         run build hooks
  ece-deploy        run deploy hooks
  ece-post-deploy   run post-deploy hooks
  ece-redeploy      run build, deploy, and post-deploy hooks
  flush-redis       clears redis cache
  flush-varnish     clears varnish cache
  ece-db            access to Database
  php 7.1           run a command in a PHP 7.1 container
  php 7.2           run a command in a PHP 7.2 container
  php 7.3           run a command in a PHP 7.3 container
  php 7.4           run a command in a PHP 7.4 container

\033[33mOptions:\033[0m
  -h            show this help text\n"

if [ ${#@} -ne 0 ]; then
    for arg in "$@"; do
        if [ "${arg#"-h"}" = "" ]; then
            printf "$USAGE"
            exit 0;
        fi
    done
fi;

case "$1" in
    pull)
        docker-compose pull
        ;;
    up)
        docker-compose down --volumes
        docker-compose up --detach
        ;;
    down)
        docker-compose down --volumes
        ;;
    bash)
        docker-compose run --rm deploy bash
        ;;
    stop)
        docker-compose stop
        ;;
    start)
        docker-compose start
        ;;
    restart)
        docker-compose restart
        ;;
    ece-build)
        docker-compose run --rm build cloud-build
        ;;
    ece-deploy)
        docker-compose run --rm deploy cloud-deploy
        ;;
    ece-post-deploy)
        docker-compose run --rm deploy cloud-post-deploy
        ;;
    ece-redeploy)
        docker-compose run --rm build cloud-build
        docker-compose run --rm deploy cloud-deploy
        docker-compose run --rm deploy cloud-post-deploy
        ;;
    flush-redis)
        docker-compose exec redis redis-cli FLUSHALL
        ;;
    flush-varnish)
        docker-compose exec varnish varnishadm ban req.url '~' '.'
        ;;
    ece-db)
        docker-compose exec db sh -c 'mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE "$@"'
        ;;
    php)
        version="$2"
        shift 2
        # allow ssh-agent forwarding for composer.json files that need access to private repos
        if [[ $(uname) = Darwin ]]; then
            # https://docs.docker.com/docker-for-mac/osxfs/#ssh-agent-forwarding (D4M > 2.2)
            export SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock"
        fi
        docker run --rm -it -e "MAGENTO_ROOT=/app" -v "$(pwd)":/app -v ~/.composer/cache:/root/.composer/cache \
            --mount "type=bind,src=$HOME/.ssh/known_hosts,target=/root/.ssh/known_hosts" \
            --mount "type=bind,src=$SSH_AUTH_SOCK,target=$SSH_AUTH_SOCK" -e SSH_AUTH_SOCK="$SSH_AUTH_SOCK" \
            "magento/magento-cloud-docker-php:${version}-cli-1.1" "$@"
        ;;
    *)
        printf "$USAGE"
        exit 0;
esac
