[[ -v $_CLICKHOUSE_COMPLETION_LOADED ]] || source "$(dirname "${BASH_SOURCE[0]}")/clickhouse-bootstrap"

function _clickhouse_get_utils()
{
    local cmd=$1 && shift
    "$cmd" help |& awk '/^clickhouse.*args/ { print $2 }'
}

function _complete_for_clickhouse_entrypoint_bin()
{
    local cur prev cword words
    eval local cmd="$( _clickhouse_quote "$1" )"
    _clickhouse_bin_exist "$cmd" || return 0

    COMPREPLY=()
    _get_comp_words_by_ref cur prev cword words

    local util="$cur"
    # complete utils, until it will be finished
    if [[ $cword -lt 2 ]]; then
        COMPREPLY=( $(compgen -W "$(_clickhouse_get_utils "$cmd")" -- "$cur") )
        return
    fi
    util="${words[1]}"

    if _complete_for_clickhouse_generic_bin_impl "$prev"; then
        COMPREPLY=( $(compgen -W "$(_clickhouse_get_options "$cmd" "$util")" -- "$cur") )
    fi

    return 0
}

_complete_clickhouse_generic clickhouse _complete_for_clickhouse_entrypoint_bin
_complete_clickhouse_generic ch _complete_for_clickhouse_entrypoint_bin
