# shellcheck shell=sh disable=SC3043

___X_CMD_JAVA_LOADED=
___x_cmd_java_loaded(){
    [ -n "$___X_CMD_JAVA_LOADED" ]
}

___x_cmd_java_load(){
    ! ___x_cmd_java_loaded || return 0

    # TODO: Only Java 11 and above can directly run java scripts, and the version of the local environment may not support it
    x hascmd java || {
        x:warn "Cannot find java installed in this current environment"
        ___x_cmd_java_load_env
        return
    }

    ___X_CMD_JAVA_LOADED=1
    # TODO: In the future, we need to check the current version is good enough.
}

___x_cmd_java_load_env(){
    # TODO: add quiet
    x:info "Loading java in this shell env using 'x env try java'"
    x env try java
}

# TODO: Add yes and quiet in the future
___x_cmd_java_load_checkenv(){
    # x hascmd java     || return

    command java -version 2>/dev/null 1>&2

    # The following code is optimization but has problem

    # local tmpfp="$___X_CMD_ROOT_CACHE/java/checkenv/.hascmd.workable.java"

    # TODO: add file timeout
    # if [ -f "$tmpfp" ]; then
    #     x hascmd java
    # else
    #     if command java -version 2>/dev/null; then
    #         x touch "$tmpfp"
    #     else
    #         x rmrf  "$tmpfp"
    #         return 1
    #     fi
    # fi
}
