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.
 
 

118 lines
2.0 KiB

#!/usr/bin/env bash
set -e
[ -n "$JENV_DEBUG" ] && set -x
resolve_link() {
if [ -L "$1" ]; then
$(type -P greadlink readlink | head -1) "$1"
fi
}
abs_dirname() {
local cwd="$(pwd)"
local path="$1"
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
path="$(resolve_link "$name" || true)"
done
pwd
cd "$cwd"
}
resolvepath() {
local cwd="$(pwd)"
cd "$1"
echo "$(pwd)"
cd "$cwd"
}
samedir() {
if [ -d "$1" ] && [ -d "$2" ]; then
local path1="$(resolvepath "$1")"
local path2="$(resolvepath "$2")"
if [ "$path1" == "$path2" ]; then
return 0;
else
return 1;
fi
fi
return 0;
}
if [ -z "${JENV_ROOT}" ]; then
JENV_ROOT="${HOME}/.jenv"
else
JENV_ROOT="${JENV_ROOT%/}"
fi
export JENV_ROOT
if [ -z "${JENV_DIR}" ]; then
JENV_DIR="$(pwd)"
else
cd "$JENV_DIR" 2>/dev/null || {
echo "jenv: cannot change working directory to \`$JENV_DIR'"
exit 1
} >&2
JENV_DIR="$(pwd)"
cd "$OLDPWD"
fi
export JENV_DIR
shopt -s nullglob
[ -n "$JENV_ORIG_PATH" ] || export JENV_ORIG_PATH="$PATH"
bin_path="$(abs_dirname "$0")"
if ! samedir "${JENV_ROOT}" "$bin_path/../" ; then
JENV_INSTALL_DIR="$(resolvepath "$bin_path/../")"
else
JENV_INSTALL_DIR="$JENV_ROOT"
fi
export JENV_INSTALL_DIR
for plugin_bin in "${JENV_ROOT}/plugins/"*/bin; do
bin_path="${bin_path}:${plugin_bin}"
done
export PATH="${bin_path}:${PATH}"
hook_path="${JENV_HOOK_PATH}"
for plugin_hook in "${JENV_ROOT}/plugins/"*/etc/jenv.d; do
hook_path="${hook_path}:${plugin_hook}"
done
export JENV_HOOK_PATH="$hook_path"
shopt -u nullglob
command="$1"
case "$command" in
"" | "-h" | "--help" )
echo -e "$(jenv---version)\n$(jenv-help)" >&2
;;
* )
command_path="$(command -v "jenv-$command" || true)"
if [ -z "$command_path" ]; then
echo "jenv: no such command \`$command'" >&2
exit 1
fi
shift 1
exec "$command_path" "$@"
;;
esac