2019-09-10 02:30:31 +08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
PLUGIN_HOME=$(dirname $(dirname "${0}"))
|
|
|
|
CACHE_DIR="/tmp/asdf-java.cache"
|
|
|
|
mkdir -p ${CACHE_DIR}
|
2019-09-11 00:57:28 +08:00
|
|
|
|
|
|
|
case $(uname -s) in
|
|
|
|
Darwin) OS="mac"
|
2019-09-10 03:44:40 +08:00
|
|
|
SHA256SUM="gsha256sum"
|
2019-09-11 00:57:28 +08:00
|
|
|
STAT="stat -f %c ${CACHE_DIR}/*"
|
|
|
|
TEMP_DIR=$(mktemp -dt asdf-java)
|
2019-09-10 02:30:31 +08:00
|
|
|
;;
|
2019-09-11 00:57:28 +08:00
|
|
|
Linux) OS="linux"
|
|
|
|
SHA256SUM="sha256sum"
|
|
|
|
STAT="stat -c %Z ${CACHE_DIR}/*"
|
|
|
|
TEMP_DIR=$(mktemp -dp /tmp asdf-java.XXXXXXXX)
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
case ${ASDF_INSTALL_VERSION} in
|
|
|
|
*_large-heap) RELEASE=${ASDF_INSTALL_VERSION%%_large-heap}
|
|
|
|
HEAP_SIZE="large"
|
|
|
|
;;
|
|
|
|
*) RELEASE=${ASDF_INSTALL_VERSION}
|
|
|
|
HEAP_SIZE="normal"
|
2019-09-10 03:44:40 +08:00
|
|
|
;;
|
2019-09-10 02:30:31 +08:00
|
|
|
esac
|
|
|
|
|
2019-09-11 00:57:28 +08:00
|
|
|
case $(uname -m) in
|
|
|
|
x86_64) ARCHITECTURE="x64" ;;
|
|
|
|
esac
|
|
|
|
|
2019-09-10 02:30:31 +08:00
|
|
|
trap "cd ${PWD}; rm -rf ${TEMP_DIR}" EXIT
|
|
|
|
|
|
|
|
function retrieve-json() {
|
|
|
|
URLS=("https://api.adoptopenjdk.net/v2/info/releases/{openjdk8}?type=jdk"
|
|
|
|
"https://api.adoptopenjdk.net/v2/info/releases/{openjdk9}?type=jdk"
|
|
|
|
"https://api.adoptopenjdk.net/v2/info/releases/{openjdk10}?type=jdk"
|
|
|
|
"https://api.adoptopenjdk.net/v2/info/releases/{openjdk11}?type=jdk"
|
|
|
|
"https://api.adoptopenjdk.net/v2/info/releases/{openjdk12}?type=jdk")
|
|
|
|
|
|
|
|
if [[ -z "$(ls -A ${CACHE_DIR})" ]] || [[ $(set -- $(${STAT}) && echo ${1}) -le $(( `date +%s` - 3600)) ]]
|
|
|
|
then
|
|
|
|
for url in "${URLS[@]}"
|
|
|
|
do
|
|
|
|
curl -s -L ${url} -# -w "%{filename_effective}\n" -o "${CACHE_DIR}/adopt-#1.json" 2>&1 >> /dev/null
|
|
|
|
done
|
|
|
|
for i in `ls ${CACHE_DIR}`
|
|
|
|
do
|
|
|
|
jq '(.[].release_name) |= sub("jdk-";"adopt-openjdk-") | (.[].release_name) |= sub("^jdk";"adopt-openjdk-")' \
|
|
|
|
${CACHE_DIR}/${i} > ${CACHE_DIR}/${i}.temp
|
|
|
|
mv ${CACHE_DIR}/${i}.temp ${CACHE_DIR}/${i}
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function all-json() {
|
|
|
|
jq -s 'add' ${CACHE_DIR}/*.json ${PLUGIN_HOME}/corretto/corretto.json ${PLUGIN_HOME}/zulu/zulu.json
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function list-all() {
|
|
|
|
retrieve-json
|
|
|
|
local hotspot="map(select(.binaries[].openjdk_impl == \"hotspot\")) \
|
|
|
|
| map(.release_name) | unique[]"
|
|
|
|
local openj9_normal_heap="map(select(.binaries[].heap_size == \"normal\")) \
|
|
|
|
| map(.release_name) | unique[] | select(contains(\"openj9\"))"
|
|
|
|
local openj9_large_heap="map(select(.binaries[].heap_size == \"large\")) \
|
|
|
|
| map(.release_name + \"_large-heap\") | unique[] | select(contains(\"openj9\"))"
|
|
|
|
echo $(all-json | jq -r "${hotspot}" ; all-json | jq -r "${openj9_normal_heap}" ; all-json | jq -r "${openj9_large_heap}")
|
|
|
|
}
|
|
|
|
|
|
|
|
function install {
|
|
|
|
retrieve-json
|
2019-09-11 00:57:28 +08:00
|
|
|
local select_release="map(select(.release_name==\"${RELEASE}\")) | unique[] | .binaries[]"
|
|
|
|
local select_binary="select(.os==\"${OS}\" and .architecture==\"${ARCHITECTURE}\" and .heap_size==\"${HEAP_SIZE}\")"
|
2019-09-10 02:30:31 +08:00
|
|
|
local binary=$(all-json | jq "$select_release | $select_binary")
|
|
|
|
local binary_link=$(set -- $(echo ${binary} | jq -r ".binary_link") ; echo ${1})
|
|
|
|
local checksum_link=$(set -- $(echo ${binary} | jq -r ".checksum_link") ; echo ${1})
|
|
|
|
|
|
|
|
cd ${TEMP_DIR}
|
|
|
|
curl -LO -# -w "%{filename_effective}\n" ${binary_link}
|
|
|
|
if [ $? -ne 0 ]
|
|
|
|
then
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
curl -LO -# -w "%{filename_effective}\n" ${checksum_link}
|
|
|
|
if [ $? -ne 0 ]
|
|
|
|
then
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2019-09-11 00:57:28 +08:00
|
|
|
${SHA256SUM} -c $(basename ${checksum_link})
|
2019-09-10 02:30:31 +08:00
|
|
|
|
|
|
|
tar zxf $(basename ${binary_link})
|
|
|
|
dir=$(set -- $(ls -d */) ; echo ${1})
|
|
|
|
cd ${dir}
|
|
|
|
mkdir -p ${ASDF_INSTALL_PATH}
|
|
|
|
|
|
|
|
case ${os} in
|
|
|
|
mac) case ${release} in
|
|
|
|
azul*) mv * ${ASDF_INSTALL_PATH} ;;
|
|
|
|
*) mv Contents/Home/* ${ASDF_INSTALL_PATH} ;;
|
|
|
|
esac ;;
|
|
|
|
*) mv * ${ASDF_INSTALL_PATH} ;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
case `basename ${0}` in
|
|
|
|
list-all) list-all
|
|
|
|
;;
|
|
|
|
install) install
|
|
|
|
;;
|
|
|
|
esac
|