mirror of
https://github.com/rfrancis/asdf-gradle.git
synced 2024-10-05 13:12:08 +08:00
5c37e603d2
While small diffs can be good, sometimes epic without breaking things is faster and better
91 lines
2.6 KiB
Bash
Executable File
91 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
export GRADLE_DISTRIBUTION_URL=${GRADLE_DISTRIBUTION_URL:-https://services.gradle.org/distributions}
|
|
|
|
has_command() {
|
|
command -v "$1" >&/dev/null
|
|
}
|
|
|
|
log() {
|
|
echo >&2 "asdf-gradle: $@"
|
|
}
|
|
|
|
die() {
|
|
log "$@"
|
|
exit 1
|
|
}
|
|
|
|
ensure_command() {
|
|
local cmd="$1"
|
|
[ -z "${2-}" ] || shift
|
|
if ! has_command "$cmd"; then
|
|
die "$cmd is missing. Please install it and try again."
|
|
fi
|
|
"$cmd" "$@"
|
|
}
|
|
|
|
checkShasum() {
|
|
local archive_file_name="${1}"
|
|
local authentic_checksum="${2}"
|
|
|
|
log 'check sha256sum'
|
|
if has_command sha256sum; then
|
|
sha256sum -c <<<"$authentic_checksum $archive_file_name"
|
|
elif has_command shasum; then
|
|
shasum -a 256 -c <<<"$authentic_checksum $archive_file_name"
|
|
else
|
|
die 'sha256sum and shasum commands missing'
|
|
fi
|
|
}
|
|
|
|
# instructions taken straight from https://gradle.org/install/#manually
|
|
|
|
installGradleRef() {
|
|
log "clone $ASDF_INSTALL_VERSION"
|
|
ensure_command git clone "$ASDF_INSTALL_VERSION" "$ASDF_INSTALL_PATH" --depth 1
|
|
}
|
|
|
|
installGradleSig() {
|
|
log "install $ASDF_INSTALL_VERSION"
|
|
mkdir -p "$ASDF_INSTALL_PATH"
|
|
cd "$ASDF_INSTALL_PATH"
|
|
ensure_command curl -OJfSL ${GRADLE_DISTRIBUTION_URL}/gradle-${ASDF_INSTALL_VERSION}-bin.zip
|
|
curl -OJfSL ${GRADLE_DISTRIBUTION_URL}/gradle-${ASDF_INSTALL_VERSION}-bin.zip.sha256
|
|
local archive_file_name=$PWD/gradle-${ASDF_INSTALL_VERSION}-bin.zip
|
|
local authentic_checksum_file=$archive_file_name.sha256
|
|
local authentic_checksum=$(cat "$authentic_checksum_file")
|
|
|
|
if ! checkShasum "$archive_file_name" "$authentic_checksum"; then
|
|
die 'Authenticity of package archive can not be assured. Exiting.'
|
|
fi
|
|
|
|
ensure_command unzip "gradle-${ASDF_INSTALL_VERSION}-bin.zip"
|
|
rm -f "gradle-${ASDF_INSTALL_VERSION}-bin.zip"
|
|
mv "gradle-${ASDF_INSTALL_VERSION}"/* .
|
|
rm -rf gradle-${ASDF_INSTALL_VERSION}
|
|
rm -f "$authentic_checksum_file"
|
|
}
|
|
|
|
installGradleNoSign() {
|
|
log "install (SECURITY WARNING! not checking signatures) $ASDF_INSTALL_VERSION"
|
|
mkdir -p "$ASDF_INSTALL_PATH"
|
|
cd "$ASDF_INSTALL_PATH"
|
|
ensure_command curl -OJfSL "${GRADLE_DISTRIBUTION_URL}/gradle-${ASDF_INSTALL_VERSION}-bin.zip"
|
|
|
|
ensure_command unzip "gradle-${ASDF_INSTALL_VERSION}-bin.zip"
|
|
rm -r "gradle-${ASDF_INSTALL_VERSION}-bin.zip"
|
|
mv "gradle-${ASDF_INSTALL_VERSION}"/* .
|
|
rm -rf "gradle-${ASDF_INSTALL_VERSION}"
|
|
}
|
|
|
|
if [ "${ASDF_INSTALL_TYPE-}" = ref ]; then
|
|
installGradleRef
|
|
elif [ "${GRADLE_SIGNATURE_CHECK-}" = no ]; then
|
|
## check if GRADLE_SIGNATURE_CHECK and its "no"
|
|
installGradleNoSign
|
|
else
|
|
## only install with sign check: default, and when GRADLE_SIGNATURE_CHECK == 'yes'
|
|
installGradleSig
|
|
fi
|