asdf-java/set-java-home.bash
Jens Broekens fb67e8ba4d
Return with previous exit code in Bash prompt function (#199)
asdf-java prepends to `$PROMPT_COMMAND`, thus swallowing up the
previous command's exit code (normally the command the user
invoked). This is troublesome if the exit code is used in the
user's own prompt command, for example to output a different
prompt.
2023-05-17 00:20:19 -04:00

30 lines
746 B
Bash

function _asdf_java_absolute_dir_path {
local absolute_path
absolute_path="$( cd -P "$( dirname "$1" )" && pwd )"
echo "$absolute_path"
}
function _asdf_java_update_java_home() {
local java_path
java_path="$(asdf which java)"
if [[ -n "${java_path}" ]]; then
export JAVA_HOME
JAVA_HOME="$(dirname "$(_asdf_java_absolute_dir_path "${java_path}")")"
export JDK_HOME=${JAVA_HOME}
fi
}
function _asdf_java_prompt_command() {
local e=$?
if [[ "${PWD}" == "${LAST_PWD}" ]]; then
return $e
fi
LAST_PWD="${PWD}"
_asdf_java_update_java_home
return $e
}
if ! [[ "${PROMPT_COMMAND:-}" =~ _asdf_java_prompt_command ]]; then
PROMPT_COMMAND="_asdf_java_prompt_command${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
fi