dotfiles

Dash Eclipse's dotfiles
git clone git://ezup.dev/dotfiles.git
Log | Files | Refs | README | LICENSE

commit 9c5f1584602f89db1319279459d29c35d49be479
parent ba3b877145dcb535a34ea5d7bcc27913c83026a2
Author: Dash Eclipse <dashezup@disroot.org>
Date:   Thu,  3 Jun 2021 16:56:36 +0000

feat: voidlinux-mirror-speedtest.sh: rewrite to take more arguments and allow pass to fzf

Diffstat:
M.local/bin/voidlinux-mirror-speedtest.sh | 89+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 71 insertions(+), 18 deletions(-)

diff --git a/.local/bin/voidlinux-mirror-speedtest.sh b/.local/bin/voidlinux-mirror-speedtest.sh @@ -1,28 +1,81 @@ #!/bin/sh -pkg_file="glibc-2.32_2.x86_64.xbps" +PKG_PATH="current/glibc-2.32_2.x86_64.xbps" +SPEED_LIMIT="1048576" +# https://docs.voidlinux.org/xbps/repositories/mirrors/index.html +MIRRORLIST="\ +https://alpha.de.repo.voidlinux.org/ T1 EU: Finland +https://mirrors.servercentral.com/voidlinux/ T1 USA: Chicago +https://alpha.us.repo.voidlinux.org/ T1 USA: Kansas City +https://mirror.ps.kz/voidlinux/ T2 Asia: Almaty, KZ +https://mirrors.bfsu.edu.cn/voidlinux/ T2 Asia: China +https://mirrors.cnnic.cn/voidlinux/ T2 Asia: China +https://mirrors.tuna.tsinghua.edu.cn/voidlinux/ T2 Asia: China +https://mirror.sjtu.edu.cn/voidlinux/ T2 Asia: China +https://mirror.maakpain.kro.kr/void/ T2 Asia: Seoul, SK +https://void.webconverger.org/ T2 Asia: Singapore +https://mirror.aarnet.edu.au/pub/voidlinux/ T2 AU: Canberra +https://ftp.swin.edu.au/voidlinux/ T2 AU: Melbourne +https://void.cijber.net/ T2 EU: Amsterdam, NL +https://mirror.easylee.nl/voidlinux/ T2 EU: Amsterdam, NL +http://ftp.dk.xemacs.org/voidlinux/ T2 EU: Denmark +https://mirrors.dotsrc.org/voidlinux/ T2 EU: Denmark +https://quantum-mirror.hu/mirrors/pub/voidlinux/ T2 EU: Hungary +https://voidlinux.qontinuum.space:4443/ T2 EU: Monaco +http://ftp.debian.ru/mirrors/voidlinux/ T2 EU: Russia +https://mirror.yandex.ru/mirrors/voidlinux/ T2 EU: Russia +https://cdimage.debian.org/mirror/voidlinux/ T2 EU: Sweden +https://ftp.acc.umu.se/mirror/voidlinux/ T2 EU: Sweden +https://ftp.lysator.liu.se/pub/voidlinux/ T2 EU: Sweden +https://ftp.sunet.se/mirror/voidlinux/ T2 EU: Sweden +https://mirror.clarkson.edu/voidlinux/ T2 USA: New York" + +show_usage() { + : "${progname:="${0##*/}"}" + cat <<_EOF | GREP_COLORS='ms=1' egrep --color "$progname|$" +Usage: $progname show usage info + $progname -w [file.csv] save speedtest results to file + $progname -r file.csv format speedtest results from file + $progname -f file.csv format speedtest results from file and pass to fzf + +pkg path: ${PKG_PATH} +speed limit: $(echo $SPEED_LIMIT | numfmt --to=iec-i --suffix=B/s) +mirrors for testing: $(echo "$MIRRORLIST" | wc -l) +_EOF +} +format_speedtest_results() { + cat "$1" | sort -t, -nrk4 | while IFS=, read url info time_appconnect download_speed; do + f_time=$(printf "%.2fs" $time_appconnect) + f_speed=$(echo $download_speed | numfmt --to=iec-i --suffix=B/s) + echo "${url},${info},${f_time},${f_speed}" + done | column -s, -t +} time_appconnect() { - time_appconnect=$(curl --connect-timeout 2 -o/dev/null -sw '%{time_appconnect}' -I $1) - result=$(printf "%.3f s" $time_appconnect) - echo $result + curl --connect-timeout 2 -o/dev/null -sw '%{time_appconnect}' -I $1 } download_speed() { - speed=$(curl --progress-bar $1 -o/dev/null --write-out "%{speed_download}" | numfmt --to=iec-i --suffix=B/s) - echo $speed + curl -Y $SPEED_LIMIT --progress-bar $1 -o/dev/null --write-out "%{speed_download}" } -# https://docs.voidlinux.org/xbps/repositories/mirrors/index.html -while read -r mirror; do - pkg_url=${mirror}current/${pkg_file} - echo $pkg_url - time_appconnect $pkg_url - download_speed $pkg_url - echo -done <<_EOF -https://alpha.de.repo.voidlinux.org/ -https://mirrors.servercentral.com/voidlinux/ -https://alpha.us.repo.voidlinux.org/ -_EOF +mirror_speedtest() { + count=1 + echo "$MIRRORLIST" | while read -r mirror etc; do + pkg_url="${mirror}${PKG_PATH}" + info=$(echo $etc | sed 's/,//g') + >&2 echo "${count}. $pkg_url" + echo "${mirror},${info},$(time_appconnect $pkg_url),$(download_speed $pkg_url)" + >&2 echo + count=$((count + 1)) + done +} + +case $1 in + -r) format_speedtest_results $2;; + -f) format_speedtest_results $2 | fzf +s;; + -w) [ -z $2 ] && { mirror_speedtest; exit 0; } || { mirror_speedtest >"$2"; exit 0; };; + *) show_usage;; +esac +exit 0