# shellcheck shell=sh disable=SC3043
# Refer: https://www.jianshu.com/p/dfbb90995a2c

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

    local op="$1"; shift
    case "$op" in
        -h|--help)
            ___x_cmd help -m pip mirror         "$@"
            return   ;;
    esac

    ___x_cmd hascmd pip || N=pip M="[command=pip] not found." log:ret:1
    case "$op" in
        ls|current|set|unset)  ___x_cmd_pip_mirror_"${op}"  "$@" ;;
        *)                     ___x_cmd_mirror___util_subcmd_invalid pip "$@" ;;
    esac
}

___x_cmd_pip_mirror_ls(){
    printf "%s\n" \
        "Code          Url                                              Name" \
        "tuna          https://pypi.tuna.tsinghua.edu.cn/simple/        清华大学开源软件镜像站" \
        "ustc          https://pypi.mirrors.ustc.edu.cn/simple/         中国科学技术大学开源镜像站" \
        "ali           http://mirrors.aliyun.com/pypi/simple/           阿里云镜像站" \
        "huazhong      http://pypi.hustunique.com/                      华中科技大学开源镜像站" \
        "shandong      http://pypi.sdutlinux.org/                       山东理工大学开源镜像站" \
        "douban        https://pypi.douban.com/simple/                  豆瓣开源镜像站" \
        "tencent       http://mirrors.cloud.tencent.com/pypi/simple     腾讯云镜像站"
}

___x_cmd_pip_mirror___url(){
    ___x_cmd_pip_mirror_ls | \
        ___x_cmd_mirror___util_get_url_by_name "$1"
}

___x_cmd_pip_mirror_current(){
    ___x_cmd_pip___exec config get global.index-url
}

___x_cmd_pip_mirror_set(){
    [ "$#" -gt 0 ] ||   set -- ali
    case "$1" in
        -h|--help)
            ___x_cmd help -m mirror python set "$@"
            return   ;;
    esac

    if [ "$1" = "official" ]; then
        ___x_cmd_pip_mirror_unset
        return
    fi

    local url
    url="$(___x_cmd_pip_mirror___url "$1")" || return
    pip:info "Setting pip mirror to $url"
    pip:info "$(___x_cmd_pip___exec config set global.index-url "$url")"
}

___x_cmd_pip_mirror_unset(){
    pip:info "Reset pip mirror to official"
    if res="$(___x_cmd_pip___exec config unset global.index-url 2>&1)"; then
        pip:info "\"$res\""
    else
        pip:error "\"$res\""
        return 1
    fi
}
