set -gx _JDKMAN_SHELL fish
if test (uname -s) != "Darwin"
    set -gx _JDKMAN_ORIG_PATH $PATH
end
set -g _JDKMAN_CURRENT_ENV_TAG ""

function _jdkman_find_env_tag
    set -l dir $PWD
    while test "$dir" != "/"
        if test -f "$dir/.java-version"
            set -l content (string trim -- (cat "$dir/.java-version"))
            if test -n "$content"
                echo $content
                return
            end
        end
        set dir (dirname $dir)
    end
    if test -f "$HOME/.config/jdkman/.java-version"
        string trim -- (cat "$HOME/.config/jdkman/.java-version")
    end
end

function _jdkman_hook --on-event fish_prompt
    set -l env_tag (_jdkman_find_env_tag)
    if test "$env_tag" = "$_JDKMAN_CURRENT_ENV_TAG"
        return
    end
    set -g _JDKMAN_CURRENT_ENV_TAG $env_tag
    if test -n "$env_tag"
        if command -v jdk-hook-env &>/dev/null
            echo (jdk-hook-env $env_tag 2>/dev/null)
        else
            echo (command jdk hook-env $env_tag 2>/dev/null)
        end
    else
        set -e JAVA_HOME
        if set -q _JDKMAN_ORIG_PATH
            set -gx PATH $_JDKMAN_ORIG_PATH
        end
    end
end
