# shellcheck shell=dash disable=SC3043,2120,2317,2153

___x_cmd_tldr_app(){
    ___X_CMD_SHBIN_CODE='
        xrc tldr ;
        "$@"
    ' ___x_cmd antizshbin ___x_cmd_tldr_app1 "$@"

    # [ "$___X_CMD_SHELL" != zsh ] || { ___x_cmd_tldr_app1 "$@" | /bin/cat; return; }
    # ___x_cmd_tldr_app1 "$@"
}

___x_cmd_tldr_app1(){
    ___x_cmd_tldr_version_pages_ || return $?
    ___x_cmd_tldr_pages_prepare || return $?
    local IFS="-"; local cmd="$*"
    if [ -z "${cmd}${___X_CMD_TLDR_APP_DATA}" ]; then
        ___x_cmd_tldr_app_full
    else
        ___x_cmd_tldr_app_partial "$cmd"
    fi
}

___x_cmd_tldr_app_partial(){
    local tldr_cmd="$1"
    ___x_cmd_tui_app_processer(){
        printf "%s\n" "data:list"
        if [ -n "$___X_CMD_TLDR_APP_DATA" ]; then
            printf "%s\n" "$___X_CMD_TLDR_APP_DATA"
        else
            local x_file=; ___x_cmd_tldr_exact___getfile_pages_ "$tldr_cmd" || return $?
            printf "%s\n" "$x_file"
        fi
    }
    { [ -z "$___X_CMD_TLDR_NOT_INTERACTIVE" ] && ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual; } || {
        local l
        ___x_cmd_tui_app_processer | {
            read -r l
            while read -r l; do
                tldr:info "x tldr --cat $l"
                ___x_cmd_tldr_cat "$l" || return $?
            done
        }
        return
    }

    local ___X_CMD_TUI_CURRENT_TLDR_POSITION=; local _exitcode=
    ___X_CMD_TLDR_LANG_IGNORE="$___X_CMD_TLDR_LANG_IGNORE" \
    ___X_CMD_TLDR_APP_BASEPATH="${___X_CMD_TLDR_DIR_DATA}/${___X_CMD_TLDR_PAGES_VERSION}" \
    ___X_CMD_TLDR_NO_BACKGROUND="$___X_CMD_TLDR_NO_BACKGROUND"  \
    ___x_cmd tui bigapp --clear-on-exit    \
        -f "$___X_CMD_ROOT_MOD/tui/lib/eg.comp/navi.comp.awk"   \
        -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/tldr.util.awk"      \
        -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/app.util.awk"       \
        -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/app.navi.awk"
    _exitcode="$?"
    unset -f ___x_cmd_tui_app_processer
    return "$_exitcode"
}

___x_cmd_tldr_app_full(){
    { ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual; } || {
        tldr:warn "tldr app is not supported in non-interactive mode"
        return 1
    }

    local x_=; ___x_cmd tui position get_ tldr_full_app
    local position="$x_"

    ___x_cmd_tui_app_processer(){
        printf "%s\n" "data:list"
        ___x_cmd_tldr_list___allfile_pages
    }

    local ___X_CMD_TUI_CURRENT_TLDR_POSITION=; local _exitcode=
    ___X_CMD_TLDR_NAVI_POSITION="$position" \
    ___X_CMD_TLDR_LANG_IGNORE="$___X_CMD_TLDR_LANG_IGNORE" \
    ___X_CMD_TLDR_APP_BASEPATH="${___X_CMD_TLDR_DIR_DATA}/${___X_CMD_TLDR_PAGES_VERSION}" \
    ___X_CMD_TLDR_NO_BACKGROUND="$___X_CMD_TLDR_NO_BACKGROUND" \
    ___x_cmd tui bigapp --clear-on-exit \
        -f "$___X_CMD_ROOT_MOD/tui/lib/eg.comp/navi.comp.awk"   \
        -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/tldr.util.awk"      \
        -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/app.util.awk"       \
        -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/app.navi.awk"
    _exitcode="$?"

    unset -f ___x_cmd_tui_app_processer
    ___x_cmd tui position store tldr_full_app "$___X_CMD_TUI_CURRENT_TLDR_POSITION"
    return "$_exitcode"
}
