Manage your Java environment
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.
 
 

155 lines
3.0 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
# 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
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"
JENV_SKIP=false
if [ $# -eq 2 ]; then
if [ "$1" = "--skip-existing" ]; then
echo "Ignore existings installations"
JENV_SKIP=true
JENV_JAVAPATH="$2"
else
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"
fi;
fi;
if [ -f "$JENV_JAVAPATH/bin/java" ];
then
if [ -z "$JENV_ALIAS" ];
then
JAVA_VERSION=`$JENV_JAVAPATH/bin/java -version 2>&1 | grep "version" | head -n 1 | cut -d\" -f 2 `
JAVA_VERSION=${JAVA_VERSION/_/.}
if $JENV_JAVAPATH/bin/java -version 2>&1 | grep -q "HotSpot"; then
JAVA_PROVIDER="oracle"
else
if $JENV_JAVAPATH/bin/java -version 2>&1 | grep -q "OpenJDK"; then
JAVA_PROVIDER="openjdk"
else
if $JENV_JAVAPATH/bin/java -version 2>&1 | grep -q "J9"; then
JAVA_PROVIDER="ibm"
else
if $JENV_JAVAPATH/bin/java -version 2>&1 | grep -q "SAP"; then
JAVA_PROVIDER="sap"
else
JAVA_PROVIDER="other"
fi;
fi;
fi;
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"
fi
JAVA_SHORTVERSION=$(sed 's/\([0-9].[0-9]\).*/\1/' <<< $JAVA_VERSION)
add_alias_check $JENV_ALIAS
add_alias_check $JAVA_VERSION
add_alias_check $JAVA_SHORTVERSION
if $version_added ; then
$(jenv-rehash)
fi
else
cwarn "$JENV_JAVAPATH is not a valid path to java installation"
fi