# shellcheck shell=dash

# Section: cat
___x_cmd_tldr_cat(){
    local x_=;  ___x_cmd_tldr_lang get_ || return $?
    local pages="pages.$x_"
    arg:init tldr 'x tldr -h'
    [ -n "$1" ] || M="Please provide the correct candidate value" arg:ret:64

    ___x_cmd_tldr_pages_prepare || return $?

    local IFS="-";  local cmd="$*"

    # cmd="${cmd%:*}"

    case "$cmd" in
        c/*|com/*)        cmd="common/${cmd#*/}"      ;;
        l/*|lin/*)        cmd="linux/${cmd#*/}"       ;;
        o/*|m|*/osx/*)    cmd="osx/${cmd#*/}"         ;;
        w/*|win/*)        cmd="windows/${cmd#*/}"     ;;
        a/*|and/*)        cmd="android/${cmd#*/}"     ;;
        d/*|dos/*)        cmd="dos/${cmd#*/}"         ;;
    esac

    IFS="$___X_CMD_UNSEENCHAR_NEWLINE"

    local fileline=""
    if [ "$cmd" != "${cmd%:*}" ]; then
        fileline="${cmd##*:}"
        cmd="${cmd%:*}"
    fi
    local x_file=;  ___x_cmd_tldr_exact___getfile_pages_ "${cmd%.md*}.md" "$pages" || return $?
    if [ -z "$x_file" ]; then
        [ "$x_" = en ] || {
            ___X_CMD_TLDR_LANG_PREFERED=en ___x_cmd_tldr_cat "$@"
            return
        }

        ___x_cmd_tldr_exact___getfile_pages_ "$cmd" pages.en
        [ -z "$x_file" ] || {
            tldr:warn "Here are some similar commands of '$cmd'"
            ___X_CMD_TLDR_APP_DATA="$x_file" ___x_cmd_tldr_app_partial
            return 1
        }

        ___x_cmd_tldr_exact___getfile_lang_ "$cmd"
        [ -f "$x_file" ] || {
            case "$cmd" in
                x-*)    shift; ___x_cmd_tldr_cat_form_xcmd "$@"; return ;;
                *)      N=tldr M="Not found $cmd" log:ret:1 ;;
            esac
        }
        ___x_cmd_cmds_cat "$x_file"
        return

    elif [ "$x_file" = "${x_file#*"${___X_CMD_UNSEENCHAR_NEWLINE}"}" ]; then
        ___x_cmd_tldr_which_ "$x_file"
        [ -f "$x_file" ] || return $?
        ___x_cmd_tldr_cat_awk "${x_file}${fileline:+":$fileline"}"
    else
        tldr:info "Here are several document for [cmd=$cmd]"
        ___X_CMD_TLDR_APP_DATA="$x_file" ___x_cmd_tldr_app_partial
    fi
}

___x_cmd_tldr_cat_awk(){
    arg:init tldr 'x tldr -h'
    arg:1:nonempty

    local NO_COLOR="$NO_COLOR"; local COLUMNS="$COLUMNS"
    local DISPLAY_STYLE="$___X_CMD_TLDR_DISPLAY_STYLE" # short long auto
    if { ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_chatty; }; then
        ___x_cmd tty update
        COLUMNS="${___X_CMD_TLDR_COLUMNS:-$COLUMNS}"
    else
        COLUMNS="${___X_CMD_TLDR_COLUMNS:-150}"
        NO_COLOR=1
    fi

    [ "$COLUMNS" -gt 0 ] || COLUMNS=150

    [ "$___X_CMD_TLDR_ENABLE_COLOR" != 1 ] || NO_COLOR=""

    local filepath="$1"
    tldr:debug "filepath=$filepath"
    ___X_CMD_TLDR_LANG_IGNORE="$___X_CMD_TLDR_LANG_IGNORE" \
    ___x_cmd awk0 \
    -v COLUMNS="$COLUMNS" \
    -v NO_COLOR="$NO_COLOR" \
    -v NO_BACKGROUND="$___X_CMD_TLDR_NO_BACKGROUND" \
    -v DISPLAY_STYLE="$DISPLAY_STYLE" \
    -v FILEPATH="$filepath" \
    -f "$___X_CMD_ROOT_MOD/awk/lib/k.awk"              \
    -f "$___X_CMD_ROOT_MOD/awk/lib/ui/ui.awk"          \
    -f "$___X_CMD_ROOT_MOD/awk/lib/u/wcwidth.awk"      \
    -f "$___X_CMD_ROOT_MOD/tui/lib/comp/share.awk"     \
    -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/tldr.util.awk" \
    -f "$___X_CMD_ROOT_MOD/tldr/lib/awk/tldr.main.awk"
}

## EndSection
