#!/bin/sh
#
# Gradle start up script for POSIX generated by Crosswake.
# This baseline is host-owned and scaffolded once.
#
set -eu
APP_HOME=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
WRAPPER_PROPERTIES="$APP_HOME/gradle/wrapper/gradle-wrapper.properties"
CACHE_ROOT="${HOME}/.crosswake/gradle"
distribution_url=$(sed -n 's/^distributionUrl=//p' "$WRAPPER_PROPERTIES" | sed 's#\\:#:#g')
if [ -z "$distribution_url" ]; then
echo "error: distributionUrl missing from $WRAPPER_PROPERTIES" >&2
exit 1
fi
distribution_zip=$(basename "$distribution_url")
distribution_name=${distribution_zip%.zip}
distribution_root="$CACHE_ROOT/$distribution_name"
gradle_bin="$distribution_root/bin/gradle"
fallback_root="$CACHE_ROOT/${distribution_name%-bin}"
if [ ! -x "$gradle_bin" ] && [ -x "$fallback_root/bin/gradle" ]; then
distribution_root="$fallback_root"
gradle_bin="$distribution_root/bin/gradle"
fi
if [ ! -x "$gradle_bin" ]; then
archive="$CACHE_ROOT/$distribution_zip"
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/crosswake-gradle.XXXXXX")
trap 'rm -rf "$tmpdir"' EXIT INT TERM
mkdir -p "$CACHE_ROOT"
if [ ! -f "$archive" ]; then
curl --fail --location --retry 5 --retry-delay 2 --retry-all-errors \
"$distribution_url" -o "$archive"
fi
unzip -q "$archive" -d "$tmpdir"
extracted_root=$(find "$tmpdir" -mindepth 1 -maxdepth 1 -type d | head -n 1)
if [ -z "$extracted_root" ]; then
echo "error: could not locate extracted Gradle distribution in $tmpdir" >&2
exit 1
fi
distribution_root="$CACHE_ROOT/$(basename "$extracted_root")"
gradle_bin="$distribution_root/bin/gradle"
rm -rf "$distribution_root"
mv "$extracted_root" "$distribution_root"
rm -f "$archive"
trap - EXIT INT TERM
rm -rf "$tmpdir"
fi
exec "$gradle_bin" "$@"