# shellcheck shell=bash disable=SC2034,SC2207,SC2012,2016  # xrc

___x_cmd_pkg___advise(){
    local op="$1"; shift
    ___x_cmd_pkg___advise_"$op" "$@"
}

___x_cmd_pkg___advise_ls_all_version(){
    local name="${COMP_WORDS[offset+1]}"
    [ -n "$ZSH_VERSION" ] || name="${COMP_WORDS[offset]}"
    ___x_cmd_pkg_ls___all "$name"
}

___x_cmd_pkg___advise_ls_downloaded(){
    ___x_cmd_pkg_ls___downloaded
}

___x_cmd_pkg___advise_ls_downloaded_candidate(){
    local name="${COMP_WORDS[offset+1]}"
    [ -n "$ZSH_VERSION" ] || name="${COMP_WORDS[offset]}"
    ___x_cmd fsiter "$___X_CMD_PKG_DOWNLOAD_PATH/$name"
}

___x_cmd_pkg___adivse_ls_installed_version(){
    local name="${COMP_WORDS[offset+1]}"
    [ -n "$ZSH_VERSION" ] || name="${COMP_WORDS[offset]}"
    ___x_cmd_pkg_ls___installed | ___x_cmd_cmds_awk -F '/' '$1=="'"$name"'"{ print $2 }'
}

___x_cmd_pkg___advise_ls_installed_name(){
    ___x_cmd_pkg_ls___installed | ___x_cmd_cmds_awk -F '/' '_[$1]!=1{ print $1; _[$1]=1; }'
}

___x_cmd_pkg___advise_ls_installed_name_version(){
    ___x_cmd_pkg_ls___installed | command sed 's/\//=/g'
}

___x_cmd_pkg___advise_ls_use_cand(){
    ___x_cmd_pkg_sphere use ls --sphere X
}

___x_cmd_pkg___advise_ls_all_cand(){
    ___x_cmd_pkg_ls___all_candidate "${1:-$cur}"
}

___x_cmd_pkg___advise_ls_cand(){
    local cur="${1:-$cur}"
    if [ -z "$cur" ]; then
        candidate_exec_arr=( $(___x_cmd_pkg___advise_ls_all_cand "$cur") )
    elif [ "${cur%%=*}" = "$cur" ]; then
        candidate_nospace_arr=( $(
            ___x_cmd_pkg_ls___all_candidate "$cur" "="
        ) )
    else
        candidate_exec_arr=( $(___x_cmd_pkg_ls___all "${cur%%=*}" | ___x_cmd_cmds_awk -v name="${cur%%=*}=" '{ str = name $0; print str}'))
    fi
}

___x_cmd_pkg___advise_ls_upgrade_cand(){
    local cur="${1:-$cur}"
    local l=
    if [ -z "$cur" ]; then
        candidate_exec_arr=( $(
            ___x_cmd_pkg_sphere use ls --sphere X | while ___x_cmd_readr l; do
                printf "%s\n" "${l%%=*}"
            done
        ) )
    elif [ "${cur%%=*}" = "$cur" ]; then
        candidate_nospace_arr=( $(
            ___x_cmd_pkg_ls___all_candidate "$cur" "="
        ) )
    else
        candidate_exec_arr=( $(___x_cmd_pkg_ls___all "${cur%%=*}" | ___x_cmd_cmds_awk -v name="${cur%%=*}=" '{ str = name $0; print str}'))
    fi
}
