VERSION="$1"
if [[ -z "$VERSION" ]]; then
    echo "Must provide version" 1>&2
    exit 1
fi

TYPE="${2:-bin}"
echo "Bootstrapping Gradle $VERSION, distribution $TYPE"
DISTRIBUTION_URL="https://services.gradle.org/distributions/gradle-$VERSION-$TYPE.zip"

cat <<EOF > /tmp/distribution_path.rb
require 'digest'

path = ARGV[0]
basename = File.basename(path)
distname = File.basename(path, '.zip')
bytes = Digest::MD5.digest(path.to_s)
hex = Digest.hexencode(bytes).to_i(16).to_s(36)

print File.expand_path("~/.gradle/wrapper/dists/#{distname}/#{hex}/#{basename}")
EOF

DISTRIBUTION_ZIP=$(ruby /tmp/distribution_path.rb "$DISTRIBUTION_URL")

DISTRIBUTION_PATH=$(dirname $DISTRIBUTION_ZIP)
if [ ! -f "$DISTRIBUTION_ZIP" ]; then
    mkdir -p "$DISTRIBUTION_PATH"
    wget -q "$DISTRIBUTION_URL" -O "$DISTRIBUTION_ZIP"
    touch "$DISTRIBUTION_ZIP.ok"
    unzip -q "$DISTRIBUTION_ZIP" -d "$DISTRIBUTION_PATH"
else
    echo "$DISTRIBUTION_ZIP already exists" 1>&2
fi
