#!/bin/bash function join_by { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; } function isURL { local value=$1 if [[ ${value:0:8} == "https://" || ${value:0:7} == "http://" ]]; then return 0 else return 1 fi } function isTrue { local value=${1,,} result= case ${value} in true|on) result=0 ;; *) result=1 ;; esac return ${result} } function isDebugging { if [[ -v DEBUG ]] && [[ ${DEBUG^^} = TRUE ]]; then return 0 else return 1 fi } function debug { if isDebugging; then log "DEBUG: $*" fi } function logn { echo -n "[init] $*" } function log { echo "[init] $*" } function logAutopause { echo "[Autopause loop] $*" } function logAutopauseAction { echo "[$(date -Iseconds)] [Autopause] $*" } function normalizeMemSize { local scale=1 case ${1,,} in *k) scale=1024;; *m) scale=1048576;; *g) scale=1073741824;; esac val=${1:0: -1} echo $(( val * scale )) } function versionLessThan { local activeParts IFS=. read -ra activeParts <<< "${VANILLA_VERSION}" local givenParts IFS=. read -ra givenParts <<< "$1" if (( ${#activeParts[@]} < 2 )); then return 1 fi if (( ${#activeParts[@]} == 2 )); then if (( activeParts[0] < givenParts[0] )) || \ (( activeParts[0] == givenParts[0] && activeParts[1] < givenParts[1] )); then return 0 else return 1 fi else if (( activeParts[0] < givenParts[0] )) || \ (( activeParts[0] == givenParts[0] && activeParts[1] < givenParts[1] )) || \ (( activeParts[0] == givenParts[0] && activeParts[1] == givenParts[1] && activeParts[2] < givenParts[2] )); then return 0 else return 1 fi fi } requireVar() { if [ ! -v $1 ]; then log "ERROR: $1 is required to be set" exit 1 fi if [ -z "${!1}" ]; then log "ERROR: $1 is required to be set" exit 1 fi } function writeEula() { if ! echo "# Generated via Docker on $(date) eula=${EULA,,} " > /data/eula.txt; then log "ERROR: unable to write eula to /data. Please make sure attached directory is writable by uid=${UID}" exit 2 fi }