mirror of https://github.com/jenv/jenv.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.5 KiB
154 lines
4.5 KiB
#!/usr/bin/env bash |
|
# Summary: Add JDK into jenv. A alias name will be generated by parsing "java -version" |
|
# Usage: jenv add /path/to/java_home |
|
set -e |
|
[ -n "$JENV_DEBUG" ] && set -x |
|
|
|
if [ "$#" -eq 0 ]; then |
|
jenv-help --usage add >&2 |
|
exit 1 |
|
fi |
|
|
|
# Provide jenv completions |
|
if [ "$1" = "--complete" ]; then |
|
echo "--skip-existing" |
|
for d in ${!#}*; do |
|
[[ -d "$d" ]] && echo "$d/" |
|
done |
|
exit |
|
fi |
|
|
|
version_added=false |
|
|
|
# Display colorized information output |
|
function cinfo() { |
|
COLOR='\033[01;32m' # bold green |
|
RESET='\033[00;00m' # normal white |
|
echo -e "${COLOR}$*${RESET}" |
|
} |
|
|
|
# Display colorized warning output |
|
function cwarn() { |
|
COLOR='\033[01;31m' # bold red |
|
RESET='\033[00;00m' # normal white |
|
echo -e "${COLOR}$*${RESET}" |
|
} |
|
|
|
|
|
function add_alias_check(){ |
|
if [ -h "${JENV_ROOT}/versions/$1" ]; |
|
then |
|
if [ "$JENV_SKIP" = false ]; then |
|
cwarn "There is already a $1 JDK managed by jenv" |
|
read -p "Do you want to override (type y to confirm)? " -n 1 -r |
|
echo "" |
|
if [[ $REPLY =~ ^[Yy]$ ]] |
|
then |
|
rm -f "${JENV_ROOT}/versions/$1" |
|
add_alias "$1" |
|
fi |
|
else |
|
cinfo " $1 already present, skip installation" |
|
fi |
|
|
|
else |
|
add_alias "$1" |
|
|
|
fi |
|
} |
|
|
|
function add_alias(){ |
|
cd "${JENV_JAVAPATH}" |
|
JENV_JAVAPATH="$PWD" |
|
cd - 2>&1 > /dev/null |
|
mkdir -p "${JENV_ROOT}/versions" |
|
ln -s "${JENV_JAVAPATH}" "${JENV_ROOT}/versions/$1" |
|
touch "${JENV_ROOT}/$1.time" |
|
cinfo "$1 added" |
|
version_added=true |
|
|
|
} |
|
|
|
JENV_JAVAPATH="$1" |
|
JENV_VERSION_FILE=".jenv-version" |
|
|
|
|
|
if [ "$#" -eq 2 ]; then |
|
cwarn "Warning : jenv add alias path/to/java_home is deprecated." |
|
cwarn "Please prefer to let jenv generate unique alias name by using" |
|
echo "" |
|
cwarn " $ jenv add path/to/java_home" |
|
echo "" |
|
|
|
JENV_JAVAPATH="$2" |
|
JENV_ALIAS="$1" |
|
|
|
add_alias_check $JENV_ALIAS |
|
if $version_added ; then |
|
$(jenv-rehash) |
|
fi; |
|
|
|
exit 0 |
|
fi; |
|
|
|
if [ -f "${JENV_JAVAPATH}/bin/java" ]; then |
|
if [ -z "${JENV_ALIAS}" ]; then |
|
JAVA_VERSION_OUTPUT=`"${JENV_JAVAPATH}"/bin/java -version 2>&1` |
|
JAVA_VERSION=`"${JENV_JAVAPATH}"/bin/java -version 2>&1 | grep 'version' | head -n 1 | cut -d\" -f 2 ` |
|
JAVA_VERSION=${JAVA_VERSION/_/.} |
|
|
|
case "${JAVA_VERSION_OUTPUT}" in |
|
*HotSpot*) JAVA_PROVIDER="oracle" ;; |
|
*Zulu*) JAVA_PROVIDER="zulu" ;; |
|
*Zing*) JAVA_PROVIDER="zulu_prime" ;; |
|
*GraalVM*) JAVA_PROVIDER="graalvm" ;; |
|
*Corretto*) JAVA_PROVIDER="corretto" ;; |
|
*sapmachine*) JAVA_PROVIDER="sap" ;; |
|
*SapMachine*) JAVA_PROVIDER="sap" ;; |
|
*SAP*) JAVA_PROVIDER="sap" ;; |
|
*Temurin*) JAVA_PROVIDER="temurin" ;; |
|
*JBR*) JAVA_PROVIDER="jetbrains" ;; |
|
*Kona*) JAVA_PROVIDER="kona" ;; |
|
*OpenLogic*) JAVA_PROVIDER="openlogic" ;; |
|
*Semeru\ Runtime\ Open*) JAVA_PROVIDER="semeru" ;; |
|
*Semeru\ Runtime\ Certified*) JAVA_PROVIDER="semeru_certified" ;; |
|
*Dragonwell*) JAVA_PROVIDER="dragonwell" ;; |
|
*J9*) JAVA_PROVIDER="ibm" ;; |
|
*OpenJDK*) JAVA_PROVIDER="openjdk" ;; |
|
*) JAVA_PROVIDER="other" ;; |
|
esac |
|
fi; |
|
|
|
if [ $JAVA_PROVIDER=="sap" ]; then |
|
JAVA_PLATFORM="64" |
|
else |
|
if "${JENV_JAVAPATH}/bin/java" -version 2>&1 | grep -q "64-Bit"; then |
|
JAVA_PLATFORM="64" |
|
else |
|
JAVA_PLATFORM="32" |
|
fi; |
|
fi; |
|
|
|
JENV_ALIAS="${JAVA_PROVIDER}${JAVA_PLATFORM}-${JAVA_VERSION}" |
|
|
|
JAVA_SHORTVERSION=$(sed 's/\([0-9]\.[0-9]\).*/\1/' <<< $JAVA_VERSION) |
|
JAVA_SHORTESTVERSION=$(sed 's/\([0-9]\{1,\}\)\.\{0,1\}.*/\1/' <<< $JAVA_VERSION) |
|
|
|
add_alias_check $JENV_ALIAS |
|
add_alias_check $JAVA_VERSION |
|
|
|
if [ "$JAVA_SHORTVERSION" != "$JAVA_VERSION" ]; then |
|
add_alias_check $JAVA_SHORTVERSION |
|
fi; |
|
|
|
# don't add shortest version for jdk 1.x |
|
if [ "$JAVA_SHORTESTVERSION" != 1 -a "$JAVA_SHORTESTVERSION" != "$JAVA_SHORTVERSION" ]; then |
|
add_alias_check $JAVA_SHORTESTVERSION |
|
fi |
|
|
|
if $version_added ; then |
|
$(jenv-rehash) |
|
fi; |
|
else |
|
cwarn "${JENV_JAVAPATH} is not a valid path to java installation" |
|
fi;
|
|
|