# shellcheck shell=dash

___x_cmd_ollama_la(){
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_chatty; then
        ___x_cmd_ollama_la___app
    else
        ___x_cmd_ollama_la___csv
    fi
}

___x_cmd_ollama_la___csv(){
    ___x_cmd ccmd 10m -- ___x_cmd httpget gitx x-cmd ollama main data/model.csv
}

___x_cmd_ollama_la___app(){
    local ___X_CMD_CSV_APP_DATA_model
    local ___X_CMD_CSV_APP_DATA_size
    local ___X_CMD_CSV_APP_DATA_tags
    local ___X_CMD_CSV_APP_DATA_pulls
    local ___X_CMD_CSV_APP_DATA_updated
    local ___X_CMD_CSV_APP_DATA_description

    {
        ___x_cmd csv app --clear --return var || return $?
    } <<A
$(___x_cmd_ollama_la___csv)
A

    [ -n "$___X_CMD_CSV_APP_DATA_model" ] || return 0
    local ___X_CMD_CSV_APP_DATA_name="${___X_CMD_CSV_APP_DATA_model}:${___X_CMD_CSV_APP_DATA_size}"
    [ -z "$___X_CMD_CSV_APP_DATA_tags" ] || ollama:info "Notice there are $___X_CMD_CSV_APP_DATA_tags tags for [model=$___X_CMD_CSV_APP_DATA_model]"

    local id
    ollama:info --m:description "$___X_CMD_CSV_APP_DATA_description" "Select an action for [model=$___X_CMD_CSV_APP_DATA_model] [size=$___X_CMD_CSV_APP_DATA_size]"
    ___x_cmd ui select id   "Next"  \
        "x ollama pull      $___X_CMD_CSV_APP_DATA_model"       \
        "x ollama pull      $___X_CMD_CSV_APP_DATA_name"        \
        "x ollama browse    $___X_CMD_CSV_APP_DATA_model"       \
        "x ollama browse    $___X_CMD_CSV_APP_DATA_name"        \
        "x ollama browse    $___X_CMD_CSV_APP_DATA_model/tags"  \
        "return 0"

    case "$id" in
        1)  ___x_cmd ollama_pull "$___X_CMD_CSV_APP_DATA_model"     ;;
        2)  ___x_cmd ollama_pull "$___X_CMD_CSV_APP_DATA_name"      ;;
        3)  ___x_cmd ollama_browse "$___X_CMD_CSV_APP_DATA_model"   ;;
        4)  ___x_cmd ollama_browse "$___X_CMD_CSV_APP_DATA_name"    ;;
        5)  ___x_cmd ollama_browse "$___X_CMD_CSV_APP_DATA_model/tags"  ;;
        *)  return 0 ;;
    esac
}
