mirror of
https://github.com/halcyon/asdf-java.git
synced 2024-10-05 15:25:31 +08:00
fb67e8ba4d
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.
30 lines
746 B
Bash
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
|