# Author:       Li Junhao           l@x-cmd.com
# shellcheck    shell=sh            disable=SC2039,SC1090,SC3043,SC2263

xrc:mod:lib curl init gencode

___x_cmd_curl(){
    case "$1" in
        gencode)        shift; ___x_cmd_curl_gencode "$@" ;;
        -h|--help)      M='curl' help:ret:0           ;;
        version_)       ___x_cmd_curl_version_        ;;
        *)              ___x_cmd___curl_origin "$@" ;;
    esac
}

___x_cmd_curl_version_(){
    local version_data="$(___x_cmd___curl_origin --version)"
    read -r x_ <<A
$version_data
A
    x_="${x_#* }"
    x_="${x_%% *}"
}

___x_cmd_curl___is_ge_776(){
    local version
    local version_major
    local version_middle

    read -r version <<A
    "$(___x_cmd___curl_origin --version)"
A
    version="${version#* }"
    version="${version%% *}"
    version_major="${version%%\.*}"
    version_middle="${version#"${version_major}"\.}"
    version_middle="${version_middle%%.*}${version##*.}"

    [ "$version_major"  -lt 8   ] || return 0
    [ "$version_major"  -eq 7   ] || return 1

    [ "$version_middle" -ge 76  ] || return 1
}

___x_cmd_curl_ensure776plus(){
    ___x_cmd_curl___is_ge_776 || {
        __x_cmd___curl_origin(){
           ___x_cmd cosmo curl "$@"
        }
    }
}

___x_cmd_curl___isavaiable(){
    local PATH="$___X_CMD_INNER_PATH"
    local x_=""
    ___x_cmd_whichbin_ curl || return 1
    case "$x_" in
        /snap/bin/*)        return 1 ;;
    esac
    if ___x_cmd os is gitbash;then
        return 1
    fi
}

___x_cmd___curl_origin(){
    if ___x_cmd_curl___isavaiable; then
        eval '
        ___x_cmd___curl_origin(){
            PATH="$___X_CMD_INNER_PATH" command curl "$@"
        }
        '
    elif (___x_cmd___curl___download_curl; ); then
        eval '
        ___x_cmd___curl_origin(){
            '"$___X_CMD_ROOT_DATA/pkg/bin/curl/curl"' "$@"
        }
        '
    else
        x:error "Fail to download curl."
        return 1
    fi
    ___x_cmd___curl_origin "$@"
}


# code="$(x curl gencode fsdafs adf page)"

# allcode="$(x curl gencode fsdafs adf page=$page)"
# for page in 2 3; do
#    allcode="$allcode --next $(x curl gencode fsdafs adf page=$page)"
# done

# eval x curl "$allcode"

xrc setmain ___x_cmd_curl