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.
83 lines
1.6 KiB
83 lines
1.6 KiB
#!/usr/bin/env bash |
|
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 |
|
|
|
for path in ${PATH//:/$'\n'}; 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 |
|
echo "usage: jenv which COMMAND" >&2 |
|
exit 1 |
|
fi |
|
|
|
if [ "$JENV_VERSION" = "system" ]; then |
|
PATH="$(remove_from_path "${JENV_ROOT}/shims")" |
|
JENV_COMMAND_PATH="$(command -v "$JENV_COMMAND")" |
|
else |
|
JENV_COMMAND_PATH="${JENV_ROOT}/versions/${JENV_VERSION}/bin/${JENV_COMMAND}" |
|
|
|
if [ -x "$JENV_COMMAND_PATH" ]; then |
|
echo |
|
else |
|
PATH="$(remove_from_path "${JENV_ROOT}/shims")" |
|
JENV_COMMAND_PATH="$(command -v "$JENV_COMMAND")" |
|
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 Ruby versions:" |
|
echo "$versions" | sed 's/^/ /g' |
|
echo |
|
} >&2 |
|
fi |
|
|
|
exit 127 |
|
fi
|
|
|