# shellcheck shell=dash
___X_CMD_USER_ID=
___X_CMD_USER_NAME=

___x_cmd_user_id_(){
    x_=""
    [ -n "$___X_CMD_USER_ID" ] || {
        if [ -n "$UID" ]; then
            ___X_CMD_USER_ID="$UID"
        else
            ___X_CMD_USER_ID="$(___x_cmd_cmds id -u)" || N=user M="Unexpected error ==> [command=id -u] fail" log:ret:1
            [ -n "$___X_CMD_USER_ID" ] || return 1
        fi
    }
    x_="${___X_CMD_USER_ID}"
}

___x_cmd_user_name_(){
    x_=""
    [ -n "$___X_CMD_USER_NAME" ] || {
        if [ -n "$USER" ]; then
            ___X_CMD_USER_NAME="$USER"
        elif x hascmd id; then
            ___X_CMD_USER_NAME="$( ___x_cmd_cmds id -un )"  || N=user M="Unexpected error ==> [command=id -un] fail" log:ret:1
        elif x hascmd whoami; then
            ___X_CMD_USER_NAME="$( ___x_cmd_cmds whoami )"  || N=user M="Unexpected error ==> [command=whoami] fail" log:ret:1
        elif x hascmd users; then
            ___X_CMD_USER_NAME="$( ___x_cmd_cmds users )"   || N=user M="Unexpected error ==> [command=users] fail" log:ret:1
        fi

        [ -n "$___X_CMD_USER_NAME" ] || return 1
    }

    x_="$___X_CMD_USER_NAME"

    # if x runnable users; then
    #     x_="$USER"
    # else
    #     x:error "Variable USER and command user NOT FOUND."
    # fi
    # USER="$x_"
}

___x_cmd_user_id(){
    local x_=; ___x_cmd_user_id_ || return
    printf "%s\n" "$x_"
}

 # Optimization: UID GROUPS [ -w / ]
___x_cmd_user_isroot(){
    local x_=; ___x_cmd_user_id_ || return
    [ "$x_" -eq 0 ]
}

___x_cmd_user_name(){
    local x_=; ___x_cmd_user_name_ || return
    printf "%s\n" "$x_"
}
