#!/bin/bash

# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
set -o pipefail
handleDebugMode

: "${PAPER_PROJECT:=paper}"
: "${PAPER_BUILD:=${PAPERBUILD:-}}"
: "${PAPER_CHANNEL:=default}"
: "${PAPER_DOWNLOAD_URL:=}"
: "${PAPER_CUSTOM_JAR:=}"
: "${PAPER_CONFIG_DEFAULTS_REPO:=${PAPER_CONFIG_REPO:=https://raw.githubusercontent.com/dayyeeet/minecraft-default-configs/main}}"

resultsFile=/data/.paper.env
if [[ $PAPER_CUSTOM_JAR ]]; then
  export SERVER="$PAPER_CUSTOM_JAR"
elif [[ $PAPER_DOWNLOAD_URL ]]; then
  if ! mc-image-helper install-paper \
    --output-directory=/data \
    --results-file="$resultsFile" \
    --url="$PAPER_DOWNLOAD_URL"; then
      logError "Failed to download from custom PaperMC URL"
      exit 1
  fi
  applyResultsFile ${resultsFile}
else
  args=(
    --output-directory=/data
    --results-file="$resultsFile"
    --project="$PAPER_PROJECT"
    --version="$VERSION"
    --channel="$PAPER_CHANNEL"
  )
  if [[ $PAPER_BUILD ]]; then
    args+=(--build="$PAPER_BUILD")
  fi
  if ! mc-image-helper install-paper "${args[@]}"; then
      logError "Failed to download $PAPER_PROJECT"
      exit 1
  fi
  applyResultsFile ${resultsFile}
fi

# Download default configs to allow for consistent patching
for c in paper-global.yml paper-world-defaults.yml spigot.yml; do
  DOWNLOAD_DEFAULT_CONFIGS+=",${PAPER_CONFIG_DEFAULTS_REPO}/${VERSION}/$c"
done
export DOWNLOAD_DEFAULT_CONFIGS

# Normalize on Spigot for downstream operations
export FAMILY=SPIGOT

exec "${SCRIPTS:-/}start-spiget" "$@"
