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.
90 lines
1.8 KiB
90 lines
1.8 KiB
#!/usr/bin/env bash |
|
# |
|
# Summary: Display the full path to an executable |
|
# |
|
# Usage: jenv which <command> |
|
# |
|
# Displays the full path to the executable that jenv will invoke when |
|
# you run the given command. |
|
|
|
set -e |
|
[ -n "$JENV_DEBUG" ] && set -x |
|
|
|
# Provide jenv completions |
|
if [ "$1" = "--complete" ]; then |
|
exec jenv shims --short |
|
fi |
|
|
|
expand_path() { |
|
if [ ! -d "$1" ]; then |
|
return 1 |
|
fi |
|
|
|
local cwd="$(pwd)" |
|
cd "$1" |
|
pwd |
|
cd "$cwd" |
|
} |
|
|
|
remove_from_path() { |
|
local path_to_remove="$(expand_path "$1")" |
|
local result="" |
|
|
|
if [ -z "$path_to_remove" ]; then |
|
echo "${PATH}" |
|
return |
|
fi |
|
|
|
local paths |
|
IFS=: paths=($PATH) |
|
|
|
for path in "${paths[@]}"; do |
|
path="$(expand_path "$path" || true)" |
|
if [ -n "$path" ] && [ "$path" != "$path_to_remove" ]; then |
|
result="${result}${path}:" |
|
fi |
|
done |
|
|
|
echo "${result%:}" |
|
} |
|
|
|
JENV_VERSION="$(jenv-version-name)" |
|
JENV_COMMAND="$1" |
|
|
|
if [ -z "$JENV_COMMAND" ]; then |
|
jenv-help --usage which >&2 |
|
exit 1 |
|
fi |
|
|
|
if [ "$JENV_VERSION" = "system" ]; then |
|
PATH="$(remove_from_path "${JENV_ROOT}/shims")" |
|
JENV_COMMAND_PATH="$(command -v "$JENV_COMMAND" || true)" |
|
else |
|
JENV_COMMAND_PATH="${JENV_ROOT}/versions/${JENV_VERSION}/bin/${JENV_COMMAND}" |
|
if ! [ -x "$JENV_COMMAND_PATH" ]; then |
|
PATH="$(remove_from_path "${JENV_ROOT}/shims")" |
|
JENV_COMMAND_PATH="$(command -v "$JENV_COMMAND" || true)" |
|
fi |
|
|
|
fi |
|
|
|
for script in $(jenv-hooks which); do |
|
source "$script" |
|
done |
|
|
|
if [ -x "$JENV_COMMAND_PATH" ]; then |
|
echo "$JENV_COMMAND_PATH" |
|
else |
|
echo "jenv: $JENV_COMMAND: command not found" >&2 |
|
|
|
versions="$(jenv-whence "$JENV_COMMAND" || true)" |
|
if [ -n "$versions" ]; then |
|
{ echo |
|
echo "The \`$1' command exists in these Java versions:" |
|
echo "$versions" | sed 's/^/ /g' |
|
echo |
|
} >&2 |
|
fi |
|
|
|
exit 127 |
|
fi
|
|
|