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.
155 lines
3.0 KiB
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
|
|
|