# shellcheck shell=dash

___x_cmd log init ddgo
xrc:mod:lib     ddgo parse cfg dump coco ai

___x_cmd_ddgo___main(){
    [ "$#" -gt 0 ] || set - --help

    local op="$1"; shift
    case "$op" in
        # top|link|dump|open)     ___x_cmd_ddgo___"${op#--}"  "$@" ;;
        # hop)                    ___x_cmd_ddgo___hop         "$@" ;;

        --cfg|cfg)              ___x_cmd_ddgo_cfg           "$@" ;;
        --init|init)            ___x_cmd_ddgo_cfg           "$@" ;;

        -h|--help)              ___x_cmd help -m ddgo       "$@" ;;

        --ai)                   ___x_cmd_ddgo_ai            "$@" ;;
        dump)                   ___x_cmd_ddgo___dump        "$@" ;;
        ,,|--coco)              ___x_cmd_ddgo_coco          "$@" ;;
        *)                      ___x_cmd_ddgo___dump "$op"  "$@" ;;
    esac
}

___x_cmd_ddgo___link(){
    local x_=
    ___x_cmd_ddgo___url_ "$@"
    ___x_cmd_ddgo___execlink "$x_"
}


___x_cmd_ddgo___open(){
    local X_help_cmd='x help -m ddgo open';    help:arg-null:parse
    local x_=
    ___x_cmd_ddgo___url_ "$@"
    ___x_cmd browse "$x_"
}

___x_cmd_ddgo___url_(){
    local IFS=" "

    local query=""
    [ -z "$___X_CMD_DDGO_QUERY_SITE" ] || {
        # ( site:pkgx.sh OR site:pkgx.dev )

        # TODO: using ( ) syntax may be different ...
        query="$(___X_CMD_DDGO_QUERY_SITE="$___X_CMD_DDGO_QUERY_SITE" command awk '
BEGIN{
    l = split(ENVIRON["___X_CMD_DDGO_QUERY_SITE"], arr, ",")
    ans = ""
    gsub(/ /, "", arr[1])
    ans = "( site:" arr[1]
    for (i=2; i<=l; ++i) {
        gsub(/ /, "", arr[i])
        ans = ans " OR  site:" arr[i]
    }

    print ans " ) "
}
        ')"

    }

    case "$1" in
        --lite)     shift; query="${query}$*"; x_="https://lite.duckduckgo.com/lite/?q=${query}"     ;;
        --news)     shift; query="$*"; x_="https://lite.duckduckgo.com/lite/?ia=news&iax=news&q=${query}"     ;;
        # --search)   x_="https://duckduckgo.com/?q=$2"             ;;
        *)          query="${query}$*"
                    x_="https://lite.duckduckgo.com/lite/?q=$query"     ;;
    esac

    [ -z "$___X_CMD_DDGO_URL_STORE_VARIABLE" ] || {
        eval "$___X_CMD_DDGO_URL_STORE_VARIABLE"='"$x_"'
    }

    ddgo:debug "url is -> $x_"
}

___x_cmd_ddgo___execlink(){
    ddgo:debug "x links --exec $*"

    local proxy=
    ___x_cmd_ddgo_cur   proxy:=     2>/dev/null

    if [ -n "$proxy" ]; then
        ___x_cmd proxy run "$proxy"     ___x_cmd_ddgo___execlink___exec "$@"
    else
        ___x_cmd_ddgo___execlink___exec "$@"
    fi
}

___x_cmd_ddgo___execlink___exec(){
    # ___x_cmd ccmd 24h -- ___x_cmd links --exec "$@"
    local ___X_CMD_LINKS_TIMEOUT=5
    ___x_cmd links --exec "$@"
}

# ___x_cmd_ddgo___setproxy(){

#     [ -z "${http_proxy:-${HTTP_PROXY}}" ]   || return 0
#     [ -z "${https_proxy:-${HTTPS_PROXY}}" ] || return 0
#     [ -z "${all_proxy:-${ALL_PROXY}}" ]     || return 0

#     local proxy=
#     ___x_cmd_ddgo_cur   proxy:=     2>/dev/null
#     if [ -n "$proxy" ] && ___x_cmd_proxy set "${proxy}" 2>/dev/null; then
#         return 0
#     fi

#     return 1
# }

___x_cmd_ddgo_advanced(){
    :
}



