# shellcheck shell=dash disable=2034

___X_CMD_THEME_ENVSENSE_DEBUG=

___x_cmd_theme_envsense(){
    local x_=

    if [ "${___X_CMD_THEME_EXIT_STATUS}" -eq 0 ]; then
        x_exitok=1
    else
        x_exitok=
    fi

    x_exitcode="$___X_CMD_THEME_EXIT_STATUS"

    [ -z "$___X_CMD_THEME_ENVSENSE_DEBUG" ] || {
        ___x_cmd_theme_envsense_debug
        return
    }

    x_docker=;  [ ! -f "/.dockerenv" ] || x_docker=1
    [ -z "$SSH_CONNECTION" ] || {
        x_ssh=1
        x_ssh_client_ip="${SSH_CONNECTION%% *}"
        x_ssh_client_port="${SSH_CONNECTION#"$x_ssh_client_ip" }"
        x_ssh_client_port=${x_ssh_client_port%% *}

        x_ssh_server_port="${SSH_CONNECTION##* }"
        x_ssh_server_ip="${SSH_CONNECTION% *}"
        x_ssh_server_ip="${x_ssh_server_ip##* }"
    }

    x_vscode=;          [ -z "${VSCODE_SHELL_INTEGRATION}${VSCODE_GIT_IPC_HANDLE}" ] || x_vscode=1
    x_wsl=;             [ -z "$WSL_INTEROP" ]   || x_wsl=1
    x_msys=;            [ -z "$MSYSTEM" ]       || x_msys=1
    x_tmux=;            [ -z "$TMUX" ]          || x_tmux=1

    ___x_cmd htag info_

    ___x_cmd_theme_envsense___ws
}

alias theme:envsense=___x_cmd_theme_envsense

___x_cmd_theme_envsense_debug(){
    x_ssh=1
    x_ssh_client_ip="192.168.1.1"
    x_ssh_client_port="8888"

    x_ssh_server_port="2222"
    x_ssh_server_ip="192.168.3.25"

    x_vscode=
    x_wsl=1
    x_tmux=;            [ -z "$TMUX" ]          || x_tmux=1

    ___x_cmd_theme_envsense___ws
}

___x_cmd_theme_envsense___ws(){
    local p="$PWD"

    x_lang=""
    x_git=""

    # Maybe there is folder security issue
    while [ -d "$p" ]; do
        [ -n "$x_lang" ]    || ___x_cmd_theme_envsense_ "$p"
        [ -n "$x_git" ]     || [ ! -f "$p/.git/config" ] || {
            x_git_root="$p"
            read -r x_git <"$p/.git/HEAD"
        }

        if [ -n "$x_lang" ] && [ -n "$x_git" ]; then
            break
        fi

        p="${p%/*}"
    done
}

___x_cmd_theme_envsense_(){
    [ ! -f "$1/pom.xml" ]           || { x_lang_root="$1"; x_lang=java;       return; }
    [ ! -f "$1/tsconfig.json" ]     || { x_lang_root="$1"; x_lang=ts;         return; }
    [ ! -f "$1/package.json" ]      || { x_lang_root="$1"; x_lang=node;       return; }
    [ ! -f "$1/requiment.txt" ]     || { x_lang_root="$1"; x_lang=python;     return; }
}
