#!/bin/bash

# shellcheck source=start-utils
. "$(dirname "$0")/start-utils"

export TYPE=spongevanilla
: ${SPONGEBRANCH:=STABLE}
: ${SPONGEVERSION:=}

# Parse branch
log "Choosing branch for Sponge"
case "$SPONGEBRANCH" in

  EXPERIMENTAL|experimental|BLEEDING|bleeding)
    SPONGEBRANCH=bleeding
  ;;

  *)
    SPONGEBRANCH=stable
  ;;

esac

# If not SPONGEVERSION selected, detect last version on selected branch
if [ -z "$SPONGEVERSION" ]; then
  log "Choosing Version for Sponge"
  if ! SPONGEVERSION=$(curl -fsSL "https://dl-api.spongepowered.org/v1/org.spongepowered/$TYPE" | jq -r --arg SPONGEBRANCH "$SPONGEBRANCH" '.buildTypes[$SPONGEBRANCH].latest.version'); then
    logError "Failed to resolve latest SpongeVanilla version from the Sponge downloads API"
    exit 1
  fi
  if [[ -z $SPONGEVERSION || $SPONGEVERSION == null ]]; then
    logError "Sponge downloads API did not return a version for branch $SPONGEBRANCH"
    exit 1
  fi
fi

VERSION="$SPONGEVERSION"
export VERSION
export SERVER="spongevanilla-$SPONGEVERSION.jar"

if [ ! -e "$SERVER" ] || isTrue "${FORCE_REDOWNLOAD}"; then
  log "Downloading $SERVER ..."
  if ! curl -fsSL -o "$SERVER" "https://repo.spongepowered.org/maven/org/spongepowered/$TYPE/$SPONGEVERSION/$SERVER"; then
    logError "Failed to download $SERVER"
    exit 1
  fi
fi

export FAMILY=SPONGE
exec "$(dirname "$0")/start-setupWorld" "$@"
