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

BASEDIR="$( cd "$(dirname "$0")" > /dev/null 2>&1 ; pwd -P )"
TMP=$(mktemp -d)
function _cleanup {
  cd "$BASEDIR"
  set +e
  DRUSH_DAEMON_PID="$(lsof -t -i:8888)"
  set -e
  if [ -n "$DRUSH_DAEMON_PID" ]; then
    echo "Killing drush daemon $DRUSH_DAEMON_PID"
    kill "$DRUSH_DAEMON_PID" || true
  fi
  if [ -d "$TMP" ]; then
    rm -rf "$TMP"
  fi
}

cd "$BASEDIR"


_cleanup
composer create-project drupal/recommended-project "$TMP" --no-interaction
cd "$TMP"

php -r "
  \$json = json_decode(file_get_contents('composer.json'), TRUE);
  \$json['repositories'][] = ['type' => 'path', 'url' => '$BASEDIR/../../*/*' ];
  file_put_contents('composer.json', json_encode(\$json, JSON_PRETTY_PRINT));
"

composer require amazeelabs/silverback-cli:@dev alchemy/zippy:@dev drush/drush

./vendor/bin/silverback init -y
source .envrc
./vendor/bin/silverback setup
./vendor/bin/silverback snapshot-create
./vendor/bin/silverback snapshot-restore
./vendor/bin/drush status
./vendor/bin/drush serve &

function retry {
  local n=1
  local max=5
  local delay=1
  while true; do
    "$@" && break || {
      if [[ $n -lt $max ]]; then
        ((n++))
        sleep $delay;
      else
        echo "Setup failed."
        _cleanup
        exit 1
      fi
    }
  done
}

retry curl --silent --head http://localhost:8888
_cleanup
