_macosx()
{
if [ $(uname -s) = Darwin ]; then
return 0
else
return 1
fi
}
JDKS_ROOT=
if [ $(uname -s) = Darwin ]; then
JDKS_ROOT=/System/Library/Frameworks/JavaVM.framework/Versions
fi
SOYLATTE_HOME=${HOME}/opt/soylatte
pickjdk()
{
if [ -z "$JDKS_ROOT" ]; then
return 1
fi
declare -a JDKS
local n=1 jdk total_jdks choice=0 currjdk=$JAVA_HOME explicit_jdk
for jdk in $JDKS_ROOT/[0-9]*; do
if [ -d $jdk -a ! -L $jdk ]; then
echo -n " $n) $(basename $jdk)"
if _macosx; then
jdk=$jdk/Home
fi
if [ $jdk = "$currjdk" ]; then
echo " < CURRENT"
else
echo
fi
JDKS[$n]=$jdk
total_jdks=$n
n=$[ $n + 1 ]
fi
done
echo " $n) Soylatte"
JDKS[$n]=$SOYLATTE_HOME
n=$[ $n + 1 ]
echo " $n) None"
JDKS[$n]=None
total_jdks=$n
if [ $total_jdks -gt 1 ]; then
while [ -z "${JDKS[$choice]}" ]; do
echo -n "Choose one of the above [1-$total_jdks]: "
read choice
done
else
choice=1
fi
if [ -z "$currjdk" ]; then
currjdk=$(dirname $(dirname $(type -path java)))
fi
if [ ${JDKS[$choice]} != None ]; then
export JAVA_HOME=${JDKS[$choice]}
else
unset JAVA_HOME
fi
explicit_jdk=
for jdk in ${JDKS[*]}; do
if [ "$currjdk" = "$jdk" ]; then
explicit_jdk=$jdk
break
fi
done
if [ "$explicit_jdk" ]; then
if [ -z "$JAVA_HOME" ]; then
PATH=$(echo $PATH | sed "s|$explicit_jdk/bin:*||g")
else
PATH=$(echo $PATH | sed "s|$explicit_jdk|$JAVA_HOME|g")
fi
elif [ "$JAVA_HOME" ]; then
PATH="$JAVA_HOME/bin:$PATH"
fi
hash -r
unset JDKS
}