#!/bin/bash -x

if [ -z "$METEOR_ENV" ]; then
  return
fi

export SPACEJAM_BIN="$(cd `dirname "${BASH_SOURCE[0]}"` && pwd)"
source $SPACEJAM_BIN/unset-meteor-env

export REPO_HOME=$(git rev-parse --show-toplevel)

if [ -e "$PWD/$METEOR_ENV.meteor.env" ]; then
  export METEOR_ENV_FILE="$PWD/$METEOR_ENV.meteor.env"
elif [ -e "$PWD/app/$METEOR_ENV.meteor.env" ]; then
  export METEOR_ENV_FILE="$PWD/app/$METEOR_ENV.meteor.env"
elif [ -e "$PWD/bin/$METEOR_ENV.meteor.env" ]; then
  export METEOR_ENV_FILE="$PWD/bin/$METEOR_ENV.meteor.env"
else
  parent_dir=$(dirname $PWD)
  # In case we're in the cli folder of a standard repo structure
  if [ -e "$parent_dir/app/$METEOR_ENV.meteor.env" ]; then
    export METEOR_ENV_FILE="$parent_dir/app/$METEOR_ENV.meteor.env"
  elif [ -e "$parent_dir/bin/$METEOR_ENV.meteor.env" ]; then
    export METEOR_ENV_FILE="$parent_dir/bin/$METEOR_ENV.meteor.env"
  fi
fi

if [ -z "$METEOR_ENV_FILE" ]; then
  >&2 echo "ERROR: METEOR_ENV=$METEOR_ENV, but $METEOR_ENV.meteor.env not found. Exiting."
  return 1
fi

if [ -e "$HOME/.meteor.env" ]; then
  source $HOME/.meteor.env
fi

meteor_env_file_dir=$(dirname $METEOR_ENV_FILE)
if [ -e "$meteor_env_file_dir/default.meteor.env" ]; then
  source $meteor_env_file_dir/default.meteor.env
fi
source $METEOR_ENV_FILE

if [ -z "$METEOR_APP_HOME" ]; then
  if [ -e "$REPO_HOME/.meteor" ]; then
    export METEOR_APP_HOME="$REPO_HOME"
  elif [ -e "$REPO_HOME/app/.meteor" ]; then
    export METEOR_APP_HOME="$REPO_HOME/app"
  else
    >&2 echo "ERROR: METEOR_APP_HOME is not set and cannot find a meteor app in $REPO_HOME or $REPO_HOME/app. Exiting."
    return 1
  fi
fi

if [ -z "$METEOR_CLI_HOME" ]; then
  if [ -e "$REPO_HOME/cli" ]; then
    export METEOR_CLI_HOME="$REPO_HOME/cli"
  fi
fi

if [ -z "$METEOR_APP_NAME" ]; then
  export METEOR_APP_NAME=$(basename $REPO_HOME)
fi

#if [ -z "$PACKAGE_DIRS" ]; then
#  #TODO Add app/packages to PACKAGE_DIRS so cli app can find those packages
#fi

if [ -z "$MONGO_URL" ] && [ -n "$MONGO_DB" ]; then
  if [ -z "$MONGO_USERNAME" ]; then
    >&2 echo "ERROR: MONGO_DB is set but MONGO_USERNAME isn't. Exiting."
    return 1
  fi
  if [ -z "$MONGO_PASSWORD" ]; then
    >&2 echo "ERROR: MONGO_DB is set but MONGO_PASSWORD isn't. Exiting."
    return 1
  fi
  if [ -z "$MONGO_HOST" ]; then
    >&2 echo "ERROR: MONGO_DB is set but MONGO_HOST isn't. Exiting."
    return 1
  fi
  export MONGO_URL="mongodb://$MONGO_USERNAME:$MONGO_PASSWORD@$MONGO_HOST:$MONGO_PORT/$MONGO_DB"
  if [ "$MONGO_SSL" == "true" ]; then
    export MONGO_URL="${MONGO_URL}?ssl=true"
  fi
fi

export METEOR_SETTINGS_PATH=$METEOR_APP_HOME/settings.json

if [ -z "$DOCKER_HTTP_PORT" ]; then
  DOCKER_HTTP_PORT="80"
fi

if [ -z "$DOCKER_HTTPS_PORT" ]; then
  DOCKER_HTTPS_PORT="443"
fi

set -e
# Let's create a meteor meteor settings file that merges the default settings and env specific settings
deep-extend $HOME/.meteor.settings.json $METEOR_APP_HOME/default.settings.json $METEOR_APP_HOME/$METEOR_ENV.settings.json > $METEOR_SETTINGS_PATH
set +e

#if [ -z "$USE_METEOR_SUBMODULE" ]; then
#  meteor_path=$HOME/.meteor
#else
#  meteor_path=$SHOPIFY_LAVAINA_HOME/submodules/meteor
#fi
