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

    local op="$1";      shift
    case "$op" in
        -h|--help)      ___x_cmd help -m version archive "$@"; return 0 ;;
        prepare|prepare_|update)
                        ___x_cmd_version_archive_"$op" "$@"
                        ;;
        *)              N=version M="Unknown subcmd -> $op" log:ret:64 ;;
    esac
}

___x_cmd_version_archive_prepare(){
    local x_=""
    ___x_cmd_version_archive_prepare_ || return $?
    printf "%s\n" "$x_"
}

___x_cmd_version_archive_prepare_(){
    x_="$___X_CMD_ROOT_SHARED/version/archive/latest.tgz"

    local url
    [ ! -f "$x_" ]  ||   return 0

    ___x_cmd_version_archive_update "$x_"
}

___x_cmd_version_archive_update(){
    local fp="${1:-"$___X_CMD_ROOT_SHARED/version/archive/latest.tgz"}"

    if ___x_cmd websrc is cn; then
        url="https://oss.resource.x-cmd.com/x-cmd/release"
    else
        url="https://raw.githubusercontent.com/x-cmd/release/main"
    fi

    url="${url}/dist/latest.tgz"
    ___x_cmd curl -q --location "$url" >"${fp}.bak" ||     N=version M="Fail to download from -> $url"     log:ret:1
    ___x_cmd_cmds mv "${fp}.bak" "${fp}"            ||     N=version M="Fail to mv ${fp}.bak to ${fp}"     log:ret:1
}
